|
|
|
Простой вопрос по отношению IS-A
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста новичку простой вопрос, если у меня есть например таблица "КЛИЕНТ" ну а он в свою очередь может быть либо частным лицом или юридическим лицом, то я хочу сделать отношение принадлежности а именно: CREATE TABLE rp.Kunden ( ID_Kunden int NOT NULL, Strasse varchar(200), PLZ varchar(10), Ort varchar(200), Land varchar(100), TelefonNummer varchar(20), Bemerkung text, Anmeldung_Datum datetime NOT NULL, Email varchar(50), -- Kunde_Type CHECK (ReiseKunden OR VermietenKunden), CONSTRAINT PK_Kunden PRIMARY KEY (ID_Kunden) ) CREATE TABLE rp.ReiseKunden ( ID_ReiseKunden int NOT NULL, ID_Kunden int NOT NULL, Name varchar(100) NOT NULL, Vorname varchar(100) NOT NULL, Handy varchar(20), Geburtstag datetime, Geschlecht char(10), CONSTRAINT PK_ReiseKunden PRIMARY KEY (ID_ReiseKunden), CONSTRAINT FK_ReiseKunden_Kunden FOREIGN KEY (ID_Kunden) REFERENCES rp.Kunden (ID_Kunden) ) CREATE TABLE rp.VermietenKunden ( ID_VermietenKunden int NOT NULL, ID_Kunden int NOT NULL, FirmName varchar(200), Fax varchar(20), CONSTRAINT PK_VermietenKunden PRIMARY KEY (ID_VermietenKunden), CONSTRAINT FK_VermietenKunden_Kunden FOREIGN KEY (ID_Kunden) REFERENCES rp.Kunden (ID_Kunden) ) GO Так вот вопрос в чем. 1. Верно ли с точки зрения теории БД написано отношение. 2. Не могу понять как правильно теперь работать с этой системой. Т.е. я например создаю "Клиента" и он например физическое лицо. После прошествия времени ищу клиента по номеру например, получаю все данные его с основной таблицы rp.Kunden, но не зная это частное лицо или фирма, я что должен перелопатить теперь две еще таблицы (rp.VermietenKunden и rp.ReiseKunden) в поиске где же этот номер проявился и кто же этот клиент, частник или фирма 3. Может сделать в основной таблице поле "ТипКлиента" Спаибо заранее за ответ и извинения за может какуюто сумбурность! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2008, 14:30 |
|
||
|
Простой вопрос по отношению IS-A
|
|||
|---|---|---|---|
|
#18+
"Может сделать в основной таблице поле "ТипКлиента"" Именно так. а еще лучше не париться с кучей таблиц, а объединить эти таблицы в одну, а коррекнтность заполнения полей в зависимости от типа сечь в триггере или в хранимых процедурах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2008, 16:15 |
|
||
|
Простой вопрос по отношению IS-A
|
|||
|---|---|---|---|
|
#18+
Спасибо. Я просто хочу сделать как по науке..... и вот по науке написано что такое отношение делается и существует, а как с ним работать не написано. Инстинктивно вроде понятно что надо тип задать, но в книгах не слова об ентом в реализации не нписано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2008, 17:03 |
|
||
|
Простой вопрос по отношению IS-A
|
|||
|---|---|---|---|
|
#18+
Dima FregerСпасибо. Я просто хочу сделать как по науке..... и вот по науке написано что такое отношение делается и существует, а как с ним работать не написано. Инстинктивно вроде понятно что надо тип задать, но в книгах не слова об ентом в реализации не нписано.Работать с ним можно просто: Вариант 1) Вветси поле "Тип клиента" и смотреть на него. В зависимостиот установленного типа - смотреть в определенную таблицу. Вариант 2) Если есть запись в таблице "Физлицо" - то считать, что клинет - это физлицо. Если есть запись в таблице "Юрлицо" - то считать, чтоэто юрик. Если есть запись и там и там - считать что это двуликий Янус. Получить полные реквизиты физлиц или юрлиц - множно обычным JOIN-ом. Проверить наличие записи в другой таблице - EXISTS-ом По теории более верный вариант (2), на практике чаще используется (1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 13:24 |
|
||
|
Простой вопрос по отношению IS-A
|
|||
|---|---|---|---|
|
#18+
Посмотрите еще с такой стороны: (1) Есть Лицо (либо ЮридическоеЛицо, либо ФизическоеЛицо). (2) Лицо может вести разные виды деятельности, (например быть Банком), для которых характерны свои реквизиты (например БИК для российского банка). (3) Лица связаны устойчивыми отношениями типа Клиент, Поставщик, Дилер, ОбслуживающийБанк, ... для которых характерны свои реквизиты - типа кредитный лимит Клиента. Короче, Клиент и ЮридическоеЛицо не во всякой базе связаны отношением IS-A. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2008, 15:58 |
|
||
|
|

start [/forum/topic.php?fid=32&fpage=101&tid=1543758]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 368ms |

| 0 / 0 |
