powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как лучше составить клчи ?
14 сообщений из 14, страница 1 из 1
Как лучше составить клчи ?
    #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
Как лучше составить клчи ?
    #36242423
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erik_Kartmann,

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

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

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

P.S. Соединения - стандартная операция в РМД.
...
Рейтинг: 0 / 0
Как лучше составить клчи ?
    #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
Как лучше составить клчи ?
    #36243465
Фотография 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]