Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как лучше составить клчи ? / 14 сообщений из 14, страница 1 из 1
09.10.2009, 15:11
    #36242352
Erik_Kartmann
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше составить клчи ?
Допстим есть такая примерная структура словами:
Есть дом, в доме есть квартиры, в них комнаты , в комнатах жыльцы, в жыльцах спрятаны документы.
Как лучше "ключевать" такую иерархию?
автор
ДОМ: Его ID
квартира : ID квартиры, ID дома(её родителя)
собственник : ID собственника, ID квартиры
документ: ID документа, ID собственника
(то есть каждый элемент содежит ID родителя, и свой )
а можно так:
автор
ДОМ: Его ID
квартира : ID квартиры, ID дома(её родителя)
собственник : ID собственника, ID квартиры, ID дома(её родителя)
документ: ID документа, ID собственника, ID квартиры, ID дома(её родителя)

здесь зная например, ID дома можно получить сразу все документы собственников без джоинов.
Кто что-нибудъ из своего опыта подскажет + и - такого подхода?

---------------------------------------------------------
SET @@verSION = 'Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Workgroup Edition on Windows NT 5.2 (Build 3790: Service Pack 1) '
...
Рейтинг: 0 / 0
09.10.2009, 15:27
    #36242423
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше составить клчи ?
Erik_Kartmann,

2 вариант не столько страшен избыточностью, сколько возможностью противоречия данных, в общем, в данном моменте нарушение нормальных форм не оправдано
я за первый вариант
...
Рейтинг: 0 / 0
09.10.2009, 16:16
    #36242597
nosov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше составить клчи ?
номенклатура документов -- отдельная таблица (справочник) имхо
...
Рейтинг: 0 / 0
09.10.2009, 16:16
    #36242598
aston
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше составить клчи ?
В чем проблема с join?
...
Рейтинг: 0 / 0
09.10.2009, 16:33
    #36242642
nosov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше составить клчи ?
авторЕсть дом, в доме есть квартиры, в них комнаты , в комнатах жыльцы, в жыльцах ... документы.похоже на файловую структуру.
документы это файлы, все остальное каталоги (имхо)
...
Рейтинг: 0 / 0
09.10.2009, 17:12
    #36242772
ChA
ChA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше составить клчи ?
Erik_KartmannКто что-нибудъ из своего опыта подскажет + и - такого подхода?А куда делись комнаты ? А как учитывается долевое участие ?

P.S. IMHO, оба варианта сомнительны, но только не по причине якобы нарушения нормализации.
...
Рейтинг: 0 / 0
09.10.2009, 20:14
    #36243112
Erik_Kartmann
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше составить клчи ?
ChAErik_KartmannКто что-нибудъ из своего опыта подскажет + и - такого подхода?А куда делись комнаты ? А как учитывается долевое участие ?

P.S. IMHO, оба варианта сомнительны, но только не по причине якобы нарушения нормализации.
я опустил это, чтоб не усложнять тему
...
Рейтинг: 0 / 0
09.10.2009, 20:19
    #36243118
Erik_Kartmann
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше составить клчи ?
nosovавторЕсть дом, в доме есть квартиры, в них комнаты , в комнатах жыльцы, в жыльцах ... документы.похоже на файловую структуру.
документы это файлы, все остальное каталоги (имхо)
В доме могут быть просто комнаты без квартир. а может быть, что и квартир с комнатами, и просто комнаты. То, как щяс это выглядит - ужасно.
отдельная таблица для комнат в доме, и отдельная таблица для комнат в квартирах. они идентичны
...
Рейтинг: 0 / 0
09.10.2009, 20:22
    #36243124
Erik_Kartmann
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше составить клчи ?
Т.е. один и тот же объект на разных уровнях
...
Рейтинг: 0 / 0
09.10.2009, 20:25
    #36243131
Erik_Kartmann
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше составить клчи ?
astonВ чем проблема с join?
кто-то считает, что это будит мегозапросом, лично перебирающим миллионы...
...
Рейтинг: 0 / 0
09.10.2009, 21:00
    #36243181
Naf
Naf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше составить клчи ?
Erik_KartmannastonВ чем проблема с join?
кто-то считает, что это будит мегозапросом, лично перебирающим миллионы...пусть приведет доводы относительно обоих вариантов, примете решение: лично я, не против избыточности, но нужны обоснования
...
Рейтинг: 0 / 0
09.10.2009, 22:45
    #36243287
ChA
ChA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше составить клчи ?
Erik_KartmannChAА куда делись комнаты ? А как учитывается долевое участие ?я опустил это, чтоб не усложнять темуЗря. Потому что пустяковые, казалось бы, изменения могут подчас повлечь за собой серьёзную переделку.
IMHO, здесь нет никакой иерархии. Навскидку можно выделить 3 явно самостоятельных сущности: владелец, объект владения и, наконец, документ на право владения, через который связаны первые 2 сущности. С первой и последней всё достаточно просто, только не надо забывать о том, документ отражает право владения на определённый момент. Наибольшая сложность как раз с объектом владения, так как там могут быть очень нетривиальные варианты. Т.е., это уже отдельная ветка, которую надо рассматривать отдельно. Т.е., идти ли по простейшему пути, типа (адрес, доля/комната) или выстраивать некую сложную схему.

P.S. Соединения - стандартная операция в РМД.
...
Рейтинг: 0 / 0
09.10.2009, 23:28
    #36243347
Erik_Kartmann
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше составить клчи ?
ну с правами владения совмесным/на дом\на помещение и т.п. отдельная опера
---------------------------------------------------------
SET @@verSION = 'Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86) Oct 14 2005 00:33:37 Copyright (c) 1988-2005 Microsoft Corporation Workgroup Edition on Windows NT 5.2 (Build 3790: Service Pack 1) '
...
Рейтинг: 0 / 0
10.10.2009, 01:10
    #36243465
ChA
ChA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как лучше составить клчи ?
Erik_Kartmannну с правами владения совмесным/на дом\на помещение и т.п. отдельная операНу вот, пустячок, "а лет потянет на пяток". Тут ещё и совместные права всплыли. Сразу возникает куча дополнительных вопросов. В общем, у Вас в предметке, по ходу, целый табун носится. И явно за рамками 2-х, рассматриваемых в первом топике, вариантов. Но в любом случае, есть владельцы, есть объекты владения и документы на право владения. И не важно, что каждый из них может представлять группу, добавятся лишь таблицы связи.
Что-то вроде
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
CREATE TABLE "Document" (
	"ID" int PRIMARY KEY
)
CREATE TABLE "Object" (
	"ID" int PRIMARY KEY
)
CREATE TABLE "Document_Object" (
	"DocumentID" int REFERENCES "Document" ("ID")
	, "ObjectID" int REFERENCES "Object" ("ID")
	, PRIMARY KEY("DocumentID", "ObjectID")
)
CREATE TABLE "Owner" (
	"ID" int PRIMARY KEY
)
CREATE TABLE "Document_Owner" (
	"DocumentID" int REFERENCES "Document" ("ID")
	, "OwnerID" int REFERENCES "Owner" ("ID")
	, PRIMARY KEY("DocumentID", "OwnerID")
)
Никаких "мегазапросов перебирающих миллионы" на любой вменяемой РСУБД с приличным оптимизатором не будет, если только не забывать про индексы. При данной схеме, с учётом автоматического, как правило, построения индексов при объявлении PK, в некоторых случаях могут понадобится индексы на "Document_Object"("ObjectID") и "Document_Owner"("OwnerID").
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как лучше составить клчи ? / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]