Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Порекомендуйте плз изнструмент для диаграммы/документации.  [new]
abrashka
Member

Откуда:
Сообщений: 521
День добрый!
Есть база порядка 600 таблиц в двсяти схемах (такого вот вида как на примере), пример сильно упростил, но суть понятна: в каждой таблице есть LocalId int identity(1,1) и он же PK и по нему кластерный индекс, хотя это поле чисто для проформы и практически нигде не используется.
Так же в каждой раблице есть GUID, который в принципе уникальный для каждой строки, но в большинстве таблиц по этому полю есть обычный не кластерный индекс. Ну и во многих таблицах есть связка на родительскую таблицу, типа внешний ключ, но формально он не существует. Целостность данных проверяется на уровне аппликации, поэтому к базе данных нет требований следить за интегрити. Не спрашивайте почему так, никто толком сам не знает, так исторически сложилось...
Поставлена задача задокументировать базу, ибо кто-то планирует писать отчеты, но никаких формальных сязей не существует. Полагаться на четкое соответствие имен полей тоже нельзя, например в таблице Countries вместо coCountryGuid может быть coGuid или coCountryId или что-то в этом роде.
Я понимаю, что вопрос из области фантастики, но все же, может есть какой-то инструмент, который на основе скажем названия имен полей может построить примерную диаграмму базы данных? Понятно, что каждая связь будет проверена и будут добавлены пропущенные, но хотя-бы костяк чтоб сгенерировался автоматически, а то вручную рисовать все связи - легче застрелиться :(
Ну и в догонку второй вопрос, есть ли инструменты, которые наглядно показывают связанные поля, например в диаграмме SSMS при наличии "правильных" связей можно видеть только связанные таблицы, но какое поле привязанно к какому диаграмма не показыват. Интересует инструмент, который да показывает связанные поля.

P.S. Глобальных перемен ради диаграммы конечно хотелось бы избежать, но всли все же прийдется что-то менять, то как было бы более разумно изменить структуру? Оставить во всех таблицах кластерный индекс по LocalId но создать первичный ключ по GuidId? Ну и соответственно добавить вторичные ключи без проверки?

Спасибо!

CREATE DATABASE DiagrammTestDB
GO

USE DiagrammTestDB
GO

CREATE TABLE Countries (
	coLocalId INT NOT NULL identity(1, 1)
	,coCountryGuid UNIQUEIDENTIFIER
	,CoName NVARCHAR(50)
	,CONSTRAINT pk_Countries_c_LocalId PRIMARY KEY CLUSTERED (coLocalId ASC)
	)

CREATE NONCLUSTERED INDEX IX_Countries_coCountryGuid ON Countries (coCountryGuid);

CREATE TABLE States (
	stLocalId INT NOT NULL identity(1, 1)
	,stGuid UNIQUEIDENTIFIER NOT NULL
	,stName NVARCHAR(50)
	,stCountryGuid UNIQUEIDENTIFIER
	,CONSTRAINT pk_States_c_LocalId PRIMARY KEY CLUSTERED (stLocalId ASC)
	)

CREATE NONCLUSTERED INDEX IX_States_stGuid ON States (stGuid);

CREATE TABLE Cities (
	ciLocalId INT NOT NULL identity(1, 1)
	,ciCityGuid UNIQUEIDENTIFIER NOT NULL
	,ciName NVARCHAR(50)
	,ciStateGuid UNIQUEIDENTIFIER
	,CONSTRAINT pk_Cities_c_LocalId PRIMARY KEY CLUSTERED (ciLocalId ASC)
	)

CREATE NONCLUSTERED INDEX IX_Cities_stGuid ON States (stGuid);
17 мар 16, 12:43    [18942547]     Ответить | Цитировать Сообщить модератору
 Re: Порекомендуйте плз изнструмент для диаграммы/документации.  [new]
abrashka
Member

Откуда:
Сообщений: 521
Прошу прощения, в последней таблице не верный индекс, должно быть так:

CREATE TABLE Cities (
	ciLocalId INT NOT NULL identity(1, 1)
	,ciCityGuid UNIQUEIDENTIFIER NOT NULL
	,ciName NVARCHAR(50)
	,ciStateGuid UNIQUEIDENTIFIER
	,CONSTRAINT pk_Cities_c_LocalId PRIMARY KEY CLUSTERED (ciLocalId ASC)
	)

CREATE NONCLUSTERED INDEX IX_Cities_ciCityGuid ON Cities (ciCityGuid);
17 мар 16, 12:46    [18942561]     Ответить | Цитировать Сообщить модератору
 Re: Порекомендуйте плз изнструмент для диаграммы/документации.  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8821
abrashka,
Для "щучьего веления, моего хотения" пишите свой инструмент...
Для отображения связей по внешним ключам есть встроенный инструмент построения диаграмм.
17 мар 16, 14:19    [18943249]     Ответить | Цитировать Сообщить модератору
 Re: Порекомендуйте плз изнструмент для диаграммы/документации.  [new]
abrashka
Member

Откуда:
Сообщений: 521
Владислав Колосов,
Свой инструмент, который изображал бы связи графически- я к сожалению написать не в силах.

"встроенный инструмент построения диаграмм" не подходит, так как не отображает связанные поля, а только таблицы.

Поэтому задал 3 вопроса:
1) Есть ли какой-то инструмент, который может рисовать диаграммы по ключевым словам или еще по чему-нибудь, без наличия ключей. (понимаю, что фантастика, но все же, мало ли...)
2) В моем случае, как правильней постройть ключи?
3) Если все-таки прийдется построить ключи, то есть ли инструменты, которые строят диаграммы и явно отображают не только связанные таблицы, но и поля.

Спасибо!
17 мар 16, 14:27    [18943306]     Ответить | Цитировать Сообщить модератору
 Re: Порекомендуйте плз изнструмент для диаграммы/документации.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31965
abrashka
Я понимаю, что вопрос из области фантастики, но все же, может есть какой-то инструмент, который на основе скажем названия имен полей может построить примерную диаграмму базы данных? Оставить во всех таблицах кластерный индекс по LocalId но создать первичный ключ по GuidId? Ну и соответственно добавить вторичные ключи без проверки?

Конечно, нет, тем более, что у вас и имена полей разные, так что на основе названия полей ничего построить нельзя.

Самое простое - сгенерить скрипт модели данных, создать отдельную базу, и по каким то своим правилам сгенерить для ней нужные UK + FK. И потом уже это - реверс-инженерингом в систему визуализации модели данных.
Это наверное будет быстрее, чем рисовать связи вручную (хотя ручками связать 600 таблиц - тоже не супертрудоёмкая задача).
17 мар 16, 14:28    [18943313]     Ответить | Цитировать Сообщить модератору
 Re: Порекомендуйте плз изнструмент для диаграммы/документации.  [new]
Glory
Member

Откуда:
Сообщений: 104751
abrashka
Поэтому задал 3 вопроса:
1) Есть ли какой-то инструмент, который может рисовать диаграммы по ключевым словам или еще по чему-нибудь, без наличия ключей. (понимаю, что фантастика, но все же, мало ли...)

Что значит "по ключевым словам" ?
Вы где-то вводите какие-то слова и по ним что-то строится ?


abrashka
3) Если все-таки прийдется построить ключи, то есть ли инструменты, которые строят диаграммы и явно отображают не только связанные таблицы, но и поля.

Вы ищите инструмент, которые отображает именно на диаграмме, всегда, строго справа от объекта, ?
И инструмент, который отображает всю информацию о связи только после ее выбора в специальном окне, расположенном справа-внизу экрана не подходит ?

Сообщение было отредактировано: 17 мар 16, 14:33
17 мар 16, 14:32    [18943358]     Ответить | Цитировать Сообщить модератору
 Re: Порекомендуйте плз изнструмент для диаграммы/документации.  [new]
abrashka
Member

Откуда:
Сообщений: 521
alexeyvg,
В принципе в большенстве полей можно найти какую-то связь, чаще всего это префикс+Связующее поле+Id/Guid, так что в принципе возможно создать определенную логику, которая подойдет для большинства таблиц. Но почему-то я все-таки больше склоняюсь к построению ключей без проверок, чтоб не повлияло на производительность. Работы конечно побольше, но все-таки по моему этот вариант более "правильный".

Ну и собственно вопрос номер два, как такие связи построить, ведь они подразумевают PK или уникальный индекс, а у меня PK по "безполезному" полю. Т.е. делать уникальный индекс по Guid полям? Или как я писал ранее, оставить во всех таблицах кластерный индекс по LocalId но создать первичный ключ по GuidId.


Glory,
Я понимаю о чем Вы говорите, понятно, что в "свойствах" есть все необходимое, но начальство хочет шашечки, а не ехать.
Одно из пожеланий/требований- возможность распечатать схему или некоторые таблицы со связями.
17 мар 16, 14:47    [18943459]     Ответить | Цитировать Сообщить модератору
 Re: Порекомендуйте плз изнструмент для диаграммы/документации.  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Ервин глянте..когда то он умел рисовать класные диаграммы по факту
17 мар 16, 14:53    [18943499]     Ответить | Цитировать Сообщить модератору
 Re: Порекомендуйте плз изнструмент для диаграммы/документации.  [new]
mishanya3624
Member

Откуда:
Сообщений: 796
Приветствую!
Есть диаграмма с отображением только названия таблиц.
Подскажите, можно ли как-то увеличить поле названия таблиц, чтобы были видны названия целиком, а не урезались, пусть даже залезают на связи? А то вручную, что-то не хоца лопатить.
5 апр 16, 11:18    [19017827]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить