SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 02.08.2009 22:16:40

serjinio
Завсегдатай
Зарегистрирован: 10.07.2008
Сообщений: 30

Нормализация БД

Помогите нормализовать БД
сейчас она имеет такую структуру
--
-- Структура таблицы `categories`
--

CREATE TABLE `categories` (
  `c_id` int(4) unsigned NOT NULL auto_increment,
  `s_id` tinyint(4) unsigned default '0',  //парент id
  `c_name` varchar(100) default 'NOT NULL',// тайтл
  `c_url` varchar(100) default 'NOT NULL',//короткая ссылка
  `c_descr` varchar(255) default 'NOT NULL',//дескрипшион
  `c_text` text NOT NULL,// текст
  `c_time_created` datetime default '0000-00-00 00:00:00'//время добавления
  PRIMARY KEY  (`c_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;

статьи
  статья 1
  статья 2
фильмы
  научные
  документальные
Фото
фотообои
интересное фото
c_id s_id c_name
1      0    статьи
2      0    фильмы
3      0    Фото
4      1    статья 1
5      2    научные
6      3    фото
и таблицы
-- Структура таблицы `articles`

CREATE TABLE `articles` (
  `a_id` int(11) unsigned NOT NULL auto_increment,
  `a_cat` tinyint(4) unsigned default NULL, //c_id categories
  `a_title` varchar(255) default NULL,// тайтл
  `a_url` varchar(100) default NULL, //короткая ссылка
  `a_descr` text, //дескрипшион
  `a_text` text,//сам текст
  `a_author` varchar(100) default NULL, //автор
  `a_date` datetime default '0000-00-00 00:00:00', //дата добавления
  `a_m_img` varchar(100) default NULL, //путь миниатюры
  `a_w_m_img` tinyint(2) unsigned default NULL, //высота миниатюры
  `a_h_m_img` tinyint(2) unsigned default NULL, // ширина миниатюры
  PRIMARY KEY  (`a_id`),
  UNIQUE KEY `a_url` (`a_url`),
  UNIQUE KEY `a_title` (`a_title`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Статьи'  ;

-- Структура таблицы `photo`
CREATE TABLE `photo` (
  `photo_id` int(11) unsigned NOT NULL auto_increment,
  `photo_cat` int(4) unsigned default NULL,//c_id categories
  `photo_title` varchar(255) default 'NOT NULL',// тайтл
  `photo_url` varchar(255) default 'NOT NULL',//короткая ссылка
  `photo_desc` text NOT NULL,//дескрипшион
  `photo_text` text NOT NULL,//сам текст
  `photo_time_created` datetime default '0000-00-00 00:00:00'//время добавления

) ENGINE=MyISAM DEFAULT CHARSET=utf8  ;


-- Структура таблицы `video`
CREATE TABLE `video` (
  `v_id` int(11) unsigned NOT NULL auto_increment,
  `v_cat` tinyint(5) NOT NULL,//c_id categories
  `v_url` varchar(255) default NULL,//короткая ссылка
  `v_title` varchar(255) NOT NULL,// тайтл
   `v_desc` varchar(255) default NULL,   //дескрипшион
  `v_about_movie` text,//сам текст
  `v_m_img` varchar(255) default NULL,//путь миниатюры
  `v_w_m_img` int(3) default NULL,//высота миниатюры
  `v_h_m_img` int(3) default NULL, // ширина миниатюры
  `v_date` datetime default '0000-00-00 00:00:00',//время добавления
  `v_links` tinyint(7) NOT NULL, // перечень урлов для скачивания
  PRIMARY KEY  (`v_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8  ;

Отредактированно serjinio (02.08.2009 22:56:30)

Неактивен

 

#2 03.08.2009 10:52:07

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Нормализация БД

А что сделать то хотите? Объединить разные данные в одну табличку?

Неактивен

 

#3 03.08.2009 17:07:21

serjinio
Завсегдатай
Зарегистрирован: 10.07.2008
Сообщений: 30

Re: Нормализация БД

Я просто думаю что структура неправильная потому что если мы добавим новую сущность например "разное" то придется добавлять новую таблицу с описанием свойств этой сущности.Может есть хоть какие-то предложения как оптимизировать эту структуру

Неактивен

 

#4 03.08.2009 19:26:19

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Нормализация БД

Таблички у Вас имеют разную структуру (хотя и есть несколько общих полей).
Вы можете попробовать объединить общие поля в одну таблицу, однако поля,
характеризующие конкретную сущность все равно прийдется хранить в отдельной
таблице, т.е. объединить разное не удастся (ну разве что создав колонку «прочее»
и запихав туда все, что не влезает в общие колонки, но это не очень хорошее
решение).

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson