Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Связи в MySQL

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Прочее] >> Связи в MySQL
Имя
Сообщение << Старые топики   Новые топики >>
Связи в MySQL - 2010-04-14 03:11:01.893333   
Эллурн

Сообщений: 83
Оценки: 0
Присоединился: 2008-12-27 21:46:32.516666
Есть две таблицы:

1. Таблица с уровнями доступа
CREATE TABLE orirights.level( &nbsp; id MEDIUMINT(9) NOT NULL AUTO_INCREMENT, &nbsp; level TINYTEXT DEFAULT NULL, &nbsp; decoding TINYTEXT NOT NULL, &nbsp; no_access TINYINT(4) UNSIGNED DEFAULT NULL, &nbsp; `read` TINYINT(4) UNSIGNED DEFAULT NULL, &nbsp; append TINYINT(4) UNSIGNED DEFAULT NULL, &nbsp; `delete` TINYINT(4) UNSIGNED DEFAULT NULL, &nbsp; `update` TINYINT(4) UNSIGNED DEFAULT NULL, &nbsp; rights TINYINT(1) NOT NULL DEFAULT 0, &nbsp; PRIMARY KEY (id), ) ENGINE = INNODB AUTO_INCREMENT = 7 AVG_ROW_LENGTH = 2730 CHARACTER SET cp1251 COLLATE cp1251_general_ci;
2. Таблица с объектами
CREATE TABLE orirights.places( &nbsp; id TINYINT(4) UNSIGNED NOT NULL AUTO_INCREMENT, &nbsp; place TINYTEXT NOT NULL, &nbsp; 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. Как это реализовать?

Заранее спасибо за ответы =)
Post #: 1
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;
Post #: 2
Страниц:  [1]
Все форумы >> [Прочее] >> Связи в MySQL







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.