Связь между типами данных

BeGe

Вождь Апачей, блин (c)
Связь между типами данных

Есть Афиша. В Афише описаны ивенты. Каждый ивент происходит в каком-то месте. Место описывает объект.
Для каждого обекта-место есть таблица, где хранятся свойства этого объекта.

И теперь задача - надо обеспечить целостность данных для этого набора таблиц.

Есть - таблица где хранятся ивенты.
Есть 4 таблицы с обектами проведения этих ивентов.
Как организовать связь между объектами и афишой в базе данных.

Движок Mysql 4.x
 

Flexx

Guest
Re: Связь между типами данных

Автор оригинала: BeGe
Как организовать связь между объектами и афишой в базе данных.
Движок Mysql 4.x
Ответ: "При помощи SQL-запросов" подойдёт?
Ведь ты не говоришь что тебе конкретно надо. Например: "как сделать выборку из таблицы n, учитывая записи таблицы n1?".

Сам вопрос: "Как организовать связь между объектами и афишой в базе данных?" чем-то напоминает вопрос "Как мне сделать сайт?"
 

BeGe

Вождь Апачей, блин (c)
Тогда для тех кто не совсем понимает целостность данных.
Использую какие таблицы и внешние ключи организовать связь между наборами даных такого типа.
 

Flexx

Guest
Автор оригинала: BeGe
Тогда для тех кто не совсем понимает целостность данных.
Использую какие таблицы и внешние ключи организовать связь между наборами даных такого типа.
Не могу понять чего ты хочешь...
Ожидал, что тебе здесь мануал по MySQL перескажут?

http://dev.mysql.com/doc/mysql/ru/example-foreign-keys.html
это подойдёт?
 

BeGe

Вождь Апачей, блин (c)
Хорошо..............
Хочу иметь в таблице одно поле где хранится place_id и
свзяи с 4 таблицами, где берётся это ID.
Да знаю я что такое внешние ключи и для чего они нужны......

я явно не туда зашёл с такой задачей :-(
обидно
 

Flexx

Guest
Автор оригинала: BeGe
Хорошо..............
Хочу иметь в таблице одно поле где хранится place_id и
свзяи с 4 таблицами, где берётся это ID.
И что мешает тебе это сделать?
Автор оригинала: BeGe
Да знаю я что такое внешние ключи и для чего они нужны......

я явно не туда зашёл с такой задачей :-(
обидно
Где задача-то?
 

BeGe

Вождь Апачей, блин (c)
tbl_events<--- *.. 1--- < tbl_location

Это без проблем

tbl_events (<--- *.. 1--- <) {tbl_loc1, tbl_loc2, tbl_loc2}

Вот думаю как бы красиво такую связь сотворить.......
Но думаю фиг выйдет....
 

Flexx

Guest
Угу... тогда такой вопрос. Одна запись в tbl_events связана с только с одной из tbl_loc? Или одна запись может содержать несколько связей?

Если одна запись - одна связь, то можно сделать так:

ID - уникальный ID
sharedID - это ID для связки с одной из таблиц
locationType (ENUM '1','2','3') - указывает к какой из таблиц этот ID относится.

-~{}~ 27.05.05 08:59:

Имел в виду:
locationType (ENUM '1','2','3') - указывает к какой из таблиц этот sharedID относится.
 

BeGe

Вождь Апачей, блин (c)
И пример выборки одним запросом можно ?
ну к этому решению я и пришёл.

Есть ещё одно решение.
в таблице tbl_events создать 4 поля, и сделать их внешними ключами к каждой таблице....
 

Flexx

Guest
Автор оригинала: BeGe
И пример выборки одним запросом можно ?
выборки разные бывают. Я не умею читать твои мысли и не знаю что конкретно тебе надо.
 

BeGe

Вождь Апачей, блин (c)
Получить список всех евентов с местом их проведения.
 

Flexx

Guest
Автор оригинала: BeGe
Получить список всех евентов с местом их проведения.
Три таблицы с locations - три запроса.

SELECT e.time, l1.place FROM events e, loc1 l1 WHERE e.type='1' AND e.sharedID=l1.ID

SELECT e.time, l2.place FROM events e, loc1 l2 WHERE e.type='2' AND e.sharedID=l2.ID

Можно вопрос? А зачем тебе три таблицы locations? Одной никак не обойтись?
 

Flexx

Guest
Например.

-~{}~ 27.05.05 12:12:

О! Идея!!!
Делаешь в четыре таблицы:
events - события
locations - общие параметры для всех событий
properies - таблица со свойствами (ID, propertyName, value)
locPropert - таблица для связи записи в locations с записями в properties

Вот с такой структурой проблем не будет.
 

Frol

Новичок
кто помнит как разговаривали русский и финн в "Особенностях национальной охоты"? :)
 
Сверху