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

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

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

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

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


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

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

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

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

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

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

Пока сделал вот так. Это нормально, рабоать будет?
...
Рейтинг: 0 / 0
19.08.2005, 14:33
    #33225423
kryak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД. Структура БД
Меня сейас интересует все тот же вопрос, как узнать к какому объекту и свойству принадлежат данные
...
Рейтинг: 0 / 0
19.08.2005, 14:48
    #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
19.08.2005, 14:54
    #33225501
ChA
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
19.08.2005, 15:00
    #33225519
kryak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД. Структура БД
дураг с инецеативойИМХО, избыточно.
Какая из таблиц Вам кажется лишней?

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

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

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

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

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

Entry
Attribute
Value
...
Рейтинг: 0 / 0
19.08.2005, 15:12
    #33225562
Проектирование БД. Структура БД
ChAЭто хто ? :) В смысле синтаксиса...
Эт не ХТО, а ШО.
Что, не видно - это псевдокод (не путать с кодом, Коддом и псевдо-Коддом! ), концептуальная подсказка, тык сказыть. :)
...
Рейтинг: 0 / 0
19.08.2005, 15:13
    #33225567
kryak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД. Структура БД
Товарищи, кому охота потрепаться пожалуста в другом топике!
Просьба общаться по теме топика, а не захламлять его своим бредом
...
Рейтинг: 0 / 0
19.08.2005, 15:18
    #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
19.08.2005, 15:38
    #33225651
kryak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД. Структура БД
1. Мне кажется что таблица tLinkProperty не лишняя.
По вашей схеме не понятно какие свойства у конкретного объекта, а тут все сразу становиться понятно. Это нужно потому, чьл не у всех свойств будут значения.
2. Сказать безграмотно, это просто. Попросил бы обосновать.
3. Не было отвеченно, как при структуре осуществить связь занчения свойства с объектом и самим свойством.


P.S.: Перед тем как писать, просьба обдумать. Это не наезд, а просто пожелание и рекомендация. Не стоит на не обижатся.
...
Рейтинг: 0 / 0
19.08.2005, 15:54
    #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
20.08.2005, 11:00
    #33226405
Dik76
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проектирование БД. Структура БД
kryak

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

--
Dik76

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

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

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

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

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

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

Удачи.


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

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

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

еще советик - делай клиента на WEB, тогда отпадет сама твоя (немного надуманная задача). Мое мнение, что идеальным сочетанием здесь является ASP.NET + C# + SQL2k
...
Рейтинг: 0 / 0
22.08.2005, 10:54
    #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]