2013-03-06 9 views
0

Я разрабатываю базу данных для веб-приложения Yii, и я не уверен, что делаю это правильно.Yii Структура базы данных

CREATE TABLE user 
(
    id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    username VARCHAR(128) NOT NULL, 
    password VARCHAR(128) NOT NULL, 
    email VARCHAR(128) NOT NULL, 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

CREATE TABLE post 
(
    id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    title VARCHAR(128) NOT NULL, 
    description TEXT NOT NULL, 
    media TEXT NOT NULL, 
    tag_id INTEGER NOT NULL, 
    status INTEGER NOT NULL, 
    create_time INTEGER, 
    update_time INTEGER, 
    user_id INTEGER NOT NULL, 
    CONSTRAINT FK_post_user FOREIGN KEY (user_id) 
     REFERENCES user (id) ON DELETE CASCADE ON UPDATE RESTRICT 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

CREATE TABLE comment 
(
    id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    content TEXT NOT NULL, 
    status INTEGER NOT NULL, 
    create_time INTEGER, 
    user_id INTEGER NOT NULL, 
    post_id INTEGER NOT NULL, 
    CONSTRAINT FK_comment_post FOREIGN KEY (post_id) 
     REFERENCES post (id) ON DELETE CASCADE ON UPDATE RESTRICT 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

CREATE TABLE tag 
(
    id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, 
    name VARCHAR(128) NOT NULL, 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 

Проблемы:

1.) В таблице после я tag_id. Я думал хранить все существующие и вновь добавленные теги в таблице тегов, а затем, когда кто-то использовал уже существующий тег или сделал новый тег, чтобы добавить как tag_id, чтобы опубликовать таблицу с помощью «,». Это лучшее решение?

2.) В таблице комментариев у меня есть user_id и post_id. Как я думаю, что внешний ключ работает, в таблице комментариев должны быть установлены 2 внешних ключа? Я попробовал это, но получил ошибку.

3.) В стол для сообщений есть ряд СМИ. Я собираюсь сохранить в этом месте строки загруженное изображение ИЛИ вставить код из youtube/или любого другого источника. Можно ли использовать только одну строку для этого или я должен использовать отдельный? 1 для изображений, 1 для встраивания кода?

Заранее спасибо

ответ

0

1) В случае, если я хотел бы использовать колонку с именем tags вместо tag_id где я бы держать сериализованную массив tag_id годов из таблицы tags

2) Проблема я думаю, потому что вы пытались добавьте внешние ключи с тем же именем. Попробуйте использовать

CONSTRAINT FK_comment_post FOREIGN KEY 
CONSTRAINT FK_comment_post_2 FOREIGN KEY 

3) Что будет, если вы решите добавить другую информацию СМИ в пост (pdf_file, или музыка). Добавьте новый столбец в столбец, это неверно. я бы рекомендовал вам создать дополнительную таблицу postmeta, где вы можете создать любой контент, а вместо этого media использовать post_text. Как в wordpress.

Смежные вопросы