Связи в MySQL
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Связи в MySQL - 2010-04-14 03:11:01.893333
|
|
|
Эллурн
Сообщений: 83
Оценки: 0
Присоединился: 2008-12-27 21:46:32.516666
|
Есть две таблицы: 1. Таблица с уровнями доступа
CREATE TABLE orirights.level(
id MEDIUMINT(9) NOT NULL AUTO_INCREMENT,
level TINYTEXT DEFAULT NULL,
decoding TINYTEXT NOT NULL,
no_access TINYINT(4) UNSIGNED DEFAULT NULL,
`read` TINYINT(4) UNSIGNED DEFAULT NULL,
append TINYINT(4) UNSIGNED DEFAULT NULL,
`delete` TINYINT(4) UNSIGNED DEFAULT NULL,
`update` TINYINT(4) UNSIGNED DEFAULT NULL,
rights TINYINT(1) NOT NULL DEFAULT 0,
PRIMARY KEY (id),
)
ENGINE = INNODB
AUTO_INCREMENT = 7
AVG_ROW_LENGTH = 2730
CHARACTER SET cp1251
COLLATE cp1251_general_ci;
2. Таблица с объектами
CREATE TABLE orirights.places(
id TINYINT(4) UNSIGNED NOT NULL AUTO_INCREMENT,
place TINYTEXT NOT NULL,
PRIMARY KEY (id)
)
ENGINE = INNODB
AUTO_INCREMENT = 10
AVG_ROW_LENGTH = 1820
CHARACTER SET cp1251
COLLATE cp1251_general_ci;
С ними мне нужно сделать следующее: каждый уровень доступа (скажем, "гость" в колонке "no_access") должен иметь перечень объектов. В описанном примере это будет означать следующее: у уровня "гость" к перечисленным в этой колонке объектам не будет никакого доступа. Проблема заключается в следующем: я нигде не смог найти, как создать связь в мускуле "один ко многим" :( А нужно мне, чтобы в каждую строчку в столбцах "no_access" - "update" в каждую ячейку можно было бы поместить несколько ссылок на places.id. Как это реализовать? Заранее спасибо за ответы =)
|
|
|
RE: Связи в MySQL - 2010-04-14 08:37:48.453333
|
|
|
rgo
Сообщений: 7170
Оценки: 281
Присоединился: 2004-09-25 05:14:25
|
Мне мозг выносят слова "в каждую ячейку поместить несколько ссылок". Брр… А, я понял кажется твою затею. Ты хочешь каждому пользователю выдать по записи записи из таблички level, так? И чтобы поле no_access определяло бы куда пользователя вообще пускать нельзя, так? Вообще делается это ещё одной таблицей. Точнее, если по-науке, то на каждое поле из списка no_access,…, update надо заводить по таблице. Будет связь один ко многим. Но чем парится с многими таблицами, я бы завёл табличку level_place:level_id MEDIUMINT(9),
place_id TINYINT(4) UNSIGNED,
type TINYINT(3) UNSIGNED Договорился бы о константах которые могут хранится в поле type: NO_ACCESS=0, READ=1, APPEND=2, DELETE=3, UPDATE=4 Ну и если я знаю id уровня доступа $LVLID и хочу узнать список мест куда доступа нету, то:SELECT place_id FROM level_place WHERE level_id=$LVLID AND type=NO_ACCESS;
|
|
|
|
|