powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД. Структура БД
20 сообщений из 20, страница 1 из 1
Проектирование БД. Структура БД
    #33225048
kryak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товарищи, подскажите.
Мне надо разработать БД, суть такая:
есть древо объектов, у каждого объекта есть свойства (имя и тому подобное - это тоже свойства), при этом у некоторых объектов естьодинаковые свойства, разные только их значения.
Вот здесь и есть вопрос, никак не могу придумать, как сделать так, чтобы запись о свойстве была одна, для нескольких объектов, а значения разные.

P.S.: Связь между объектом и свойством сделал через ссылку на него, т.е. объект ссылается на свои свойсва, при добавлении нового объекта если он содержит некоторые из этих свойств, он так же ссылается на них, а вот как сделать чтобы при этом свойство различало данные по объектам, никак не приложу ума.

Помогите пожалуйста.
...
Рейтинг: 0 / 0
Проектирование БД. Структура БД
    #33225263
eerwerwerwerwerwer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kryak

Помогите пожалуйста.

через связующую таблицу СвойстваОбъектов многие-ко-многим


ОбъектАйДи
СвойствоАйДи
Значение
...
Рейтинг: 0 / 0
Проектирование БД. Структура БД
    #33225303
"It will never stop..." (c) 'The Ring'

eerwerwerwerwerwer[quot kryak]
через связующую таблицу СвойстваОбъектов многие-ко-многим

ОбъектАйДи
СвойствоАйДи
Значение
Эт ж пресловутый EAV ?

А чем хуже - по табличке на тип объекта + view для узлов иерархии (т.е. супертипов)?
...
Рейтинг: 0 / 0
Проектирование БД. Структура БД
    #33225393
kryak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
eerwerwerwerwerwer
через связующую таблицу СвойстваОбъектов многие-ко-многим
ОбъектАйДи
СвойствоАйДи
Значение

Откуда брать ОбъектАйДи, если в таблице свойств его нет (так как связь свойств с объектами идет через связывающую таблицу).

А из связывающий таблицы взять не получается так как там ОбъектАйДи связан с таблицей Объектов.

Пока сделал вот так. Это нормально, рабоать будет?
...
Рейтинг: 0 / 0
Проектирование БД. Структура БД
    #33225423
kryak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Меня сейас интересует все тот же вопрос, как узнать к какому объекту и свойству принадлежат данные
...
Рейтинг: 0 / 0
Проектирование БД. Структура БД
    #33225474
kryak Это нормально, рабоать будет?
Эт вопрос не к сообществу, а к Вам - Вы можете обеспечить корректную работу Вашей схемы?

kryakПока сделал вот так.
ИМХО, избыточно.
Упрощаем до традиционного EAV:
Код: plaintext
1.
2.
3.
4.
5.
6.
tObjects (ObjectID, ParentID) KEY ObjectID
tProperty(PropertyID, PropertyName, PropertyType)  KEY PropertyID
tObjectPropertyData(ObjectID, PropertyID, Data) 
  PRIMARY KEY (ObjectID, PropertyID)
  FOREIGN KEY (ObjectID) references tObjects
  FOREIGN KEY (PropertyID) references tProperty

Усложняем для категорий и ограничений (если нужно):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
tCategory(CategoryID)
tCategoryObject(CategoryID, ObjectID)
tCategoryProperty(CategoryID, PropertyID)
	PRIMARY KEY (CategoryID, PropertyID)
------------------------------
TRIGGER 
   ON INSERT TO tObjectPropertyData 
   CHECK EXISTS 
	tCategoryProperty NATURAL JOIN tCategoryObject
	WHERE 
		ObjectID = NEW.ObjectID
		AND
		PropertyID = NEW.PropertyID

P.S. Все равно, есть у меня некоторое внутреннее неприятие EAV
...
Рейтинг: 0 / 0
Проектирование БД. Структура БД
    #33225501
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дураг с инецеативой
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
...
TRIGGER 
   ON INSERT TO tObjectPropertyData 
   CHECK EXISTS 
	tCategoryProperty NATURAL JOIN tCategoryObject
	WHERE 
		ObjectID = NEW.ObjectID
		AND
		PropertyID = NEW.PropertyID
Это хто ? :) В смысле синтаксиса...
...
Рейтинг: 0 / 0
Проектирование БД. Структура БД
    #33225519
kryak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
дураг с инецеативойИМХО, избыточно.
Какая из таблиц Вам кажется лишней?

1. По вашей схеме видно не видно, как происходит связь между свойствами и объектами (пример: у двух объектов одно свойство но разные значения).

2. Что такое это EAV?

3. Я имелл ввиду когда спрашивал "Будет ли это работать", что грамотно ли составлена структура.
...
Рейтинг: 0 / 0
Проектирование БД. Структура БД
    #33225522
дураг с инецеативой
P.S. Все равно, есть у меня некоторое внутреннее неприятие EAV

я так и понял
...
Рейтинг: 0 / 0
Проектирование БД. Структура БД
    #33225540
kryak

2. Что такое это EAV?

Entry
Attribute
Value
...
Рейтинг: 0 / 0
Проектирование БД. Структура БД
    #33225562
ChAЭто хто ? :) В смысле синтаксиса...
Эт не ХТО, а ШО.
Что, не видно - это псевдокод (не путать с кодом, Коддом и псевдо-Коддом! ), концептуальная подсказка, тык сказыть. :)
...
Рейтинг: 0 / 0
Проектирование БД. Структура БД
    #33225567
kryak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Товарищи, кому охота потрепаться пожалуста в другом топике!
Просьба общаться по теме топика, а не захламлять его своим бредом
...
Рейтинг: 0 / 0
Проектирование БД. Структура БД
    #33225585
kryak
Какая из таблиц Вам кажется лишней?

tLinkProperty, tLinkData
kryak
1. По вашей схеме видно не видно, как происходит связь между свойствами и объектами (пример: у двух объектов одно свойство но разные значения).

Код: plaintext
1.
2.
tObjectPropertyData(ObjectID: 111 , PropertyID: 1 , Data:'123456');
tObjectPropertyData(ObjectID: 222 , PropertyID: 1 , Data:'098765');
kryak
2. Что такое это EAV?

http://www.google.com/search?q=entity+attribute+value
kryak
3. Я имелл ввиду когда спрашивал "Будет ли это работать", что грамотно ли составлена структура.
ИМХО, неграмотно. Работать будет, если Вы это обеспечите.
...
Рейтинг: 0 / 0
Проектирование БД. Структура БД
    #33225651
kryak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Мне кажется что таблица tLinkProperty не лишняя.
По вашей схеме не понятно какие свойства у конкретного объекта, а тут все сразу становиться понятно. Это нужно потому, чьл не у всех свойств будут значения.
2. Сказать безграмотно, это просто. Попросил бы обосновать.
3. Не было отвеченно, как при структуре осуществить связь занчения свойства с объектом и самим свойством.


P.S.: Перед тем как писать, просьба обдумать. Это не наезд, а просто пожелание и рекомендация. Не стоит на не обижатся.
...
Рейтинг: 0 / 0
Проектирование БД. Структура БД
    #33225692
kryak1. Мне кажется что таблица tLinkProperty не лишняя.
По вашей схеме не понятно какие свойства у конкретного объекта, а тут все сразу становиться понятно. Это нужно потому, чьл не у всех свойств будут значения.

kryak, если мы говорим, что объект имеет свойство, но у него нет значения, то есть ли на самом деле у объекта это свойство???

Какие свойства у какого объекта:
Код: plaintext
1.
2.
3.
4.
select ObjectID, PropertyName 
         from tProperty 
         join tObjectPropertyData using (PropertyID) 
         join tObjects using (ObjectID)

kryak2. Сказать безграмотно, это просто. Попросил бы обосновать.
Проектирование БД на SQL принципиально не может не быть безграмотным, т.к. сам SQL сделан безграмотно.
Кстати, ИМХО обоснованию не подлежит. :)

kryak3. Не было отвеченно, как при структуре осуществить связь занчения свойства с объектом и самим свойством.
Мне показалось очевидным, что tObjectPropertyData явно описывает предикат
Код: plaintext
объект ObjectID имеет свойсто PropertyID со значением Data 
...
Рейтинг: 0 / 0
Проектирование БД. Структура БД
    #33226405
Dik76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kryak

k> 1. Мне кажется что таблица tLinkProperty не лишняя.
k> По вашей схеме не понятно какие свойства у конкретного объекта, а тут
k> все сразу становиться понятно. Это нужно потому, чьл не у всех свойств
k> будут значения.
В целом согласен с автором. А вот наличие связи м/у tProperty и tLinkData возможно лишнее..имхо достаточно LinkPropertyId.

--
Dik76

Posted via ActualForum NNTP Server 1.2
...
Рейтинг: 0 / 0
Проектирование БД. Структура БД
    #33227001
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Автор
По диаграмме возникают вопросы
1.Свойство не определяет тип данного? Т.е. свойство А может иметь текстовое значение у одного объекта и числовое у другого?
2. Что означает наличие свойства у объекта при отсутствии значения?
Традиционно это делается как описал дураг с инецеативой , однако видимо есть какие-то особенности в вашем случае, и лучше бы их знать чтобы зря не ломать копья.
...
Рейтинг: 0 / 0
Проектирование БД. Структура БД
    #33227288
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе утро.

Не забывай про то, что у свойств с одинаковым именем может быть разный тип данных.

Поэтому предлагаю не наворачивать (тем более, что навряд ли количество записей будет сильно разрастаться), а сделать еще и с учетом подсистем:

Таблички:
1 - Подсистема(ИД, наимен)
2 - ТипыДанных(ИД, Наименование, Правила_обработки)
3 - Формы(ИД, ИД_подсистемы)
4 - Объекты (ИД, Тип объекта, ИД_формы, ИД_родительского_объекта)
5 - Свойства_объектов_и_форм(ИД, ИД_объекта/ИД_формы, FLAG(0=форма/1=объект), Значение)

Делаешь одну единственную вьюху, которая будет тебе возвращать все данные.

p.s. при использовании добавишь недостающие поля самостоятельно.

Удачи.


p.p.s Когда пиво пойдим пить, Штирлиц?
...
Рейтинг: 0 / 0
Проектирование БД. Структура БД
    #33227299
M0us
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kryakТоварищи, подскажите.
Мне надо разработать БД, суть такая:
есть древо объектов, у каждого объекта есть свойства (имя и тому подобное - это тоже свойства), при этом у некоторых объектов естьодинаковые свойства, разные только их значения.
Вот здесь и есть вопрос, никак не могу придумать, как сделать так, чтобы запись о свойстве была одна, для нескольких объектов, а значения разные.

P.S.: Связь между объектом и свойством сделал через ссылку на него, т.е. объект ссылается на свои свойсва, при добавлении нового объекта если он содержит некоторые из этих свойств, он так же ссылается на них, а вот как сделать чтобы при этом свойство различало данные по объектам, никак не приложу ума.

Помогите пожалуйста.

еще советик - делай клиента на WEB, тогда отпадет сама твоя (немного надуманная задача). Мое мнение, что идеальным сочетанием здесь является ASP.NET + C# + SQL2k
...
Рейтинг: 0 / 0
Проектирование БД. Структура БД
    #33227341
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dik76
kryak

k> 1. Мне кажется что таблица tLinkProperty не лишняя.
k> По вашей схеме не понятно какие свойства у конкретного объекта, а тут
k> все сразу становиться понятно. Это нужно потому, чьл не у всех свойств
k> будут значения.
В целом согласен с автором. А вот наличие связи м/у tProperty и tLinkData возможно лишнее..имхо достаточно LinkPropertyId.

--
Dik76

В схеме автора _каждый_ объект (tObjects) имеет свою собственную структуру. поэтому то и кажется что таблица описания структуры - избыточна. Достаточно просто таблицы структуры (собственно свойств). Вот если бы значения tObjects были классами (описателями подмножества экземпляров, а не экземплярами), у которых была бы структура, а множество экземпляров этих классов (уже заданной структуры tLinkProperty), сваленные в некую tXXX имели бы свои значения (множества прорерти) только из этой структуры, то наверное да, табличка имела бы смысл.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Проектирование БД. Структура БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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