Условия към DB в играта за код.

Статус
Not open for further replies.

Admin

Registered
Преди да почне играта за код искам да напиша изискванията към базата данни.
НЕ зависимо дали кода ще е за система за функции или нещо друго тези условия ще са в сила.

Задължителните условия:

1.
Всяка таблица трябва да има идентифицираща колона -
първичен ключ (primary key) който да е AUTO_INCREMENT.
КАзано на "български" - всеки ред от всяка ваша таблица
трябва да има уникален индитификатор (id),
който да се генерира автоматично (AUTO_INCREMENT).
Не може таблицата ви да представлява нещо от сорта на:
|функция 1| текст1 за информация |
|функция 2| текст2 за информация |

Трябва да е
|1|функция 1| текст1 за информация |
|2|функция 2| текст2 за информация |
|3|функция 3| текст3 за информация |


2.
Използвайте ключове за връзка между таблиците.
Не може да запишете информацията така:
|id|function|avtor|text
|10|фунkция1|pesho|текст1 за информация |
|11|фунkция2|stani|текст2 за информация |
|12|фунkция3|blago|текст3 за информация |

pesho, stani и blago трябва да са външни ключове и таблицата трябва да иглежда така:
|id|function|avtor|text
|10|фунkция1|33323|текст1 за информация |
|11|фунkция2|32324|текст2 за информация |
|12|фунkция3|32325|текст3 за информация |

Числата 33323, 33324, 33325 са ID-то на автора ( от таблцита user).

3.
Задавайте правилно типа на полетата.
Не може ID да е от типа text.
Където може (на повечето може) задавайте и дължина на полето.

4.
Описвайте полетата в които ще записвате, защото
в противаен случай ще се омазва всичко ако аз реша да добавя нова колонка.
При запис в DB не ползвайте синтаксиса:
INSERT INTO table_name VALUES ("","text","id_");
Трябва да е :
INSERT INTO table_name (id,text,user) VALUES ("","text","id_");


--------------------------------------------------------------------
--------------------------------------------------------------------



Препоръчително:


Използвайте релации от тип "много към много".
Пример:
Всяка PHP функция може да има някаква връзка с друга php функция.
Примерно 2 функции се използват, често заедно или са с обратно действие, близки, подобни и т.н.
Вие искате да разрешите на потребителя при вкарването на нова функция да опише и с кои
други функции има нещо общо.
Такива връзки трябва да се описват в отделна таблица, тъй като една функция може да е подобна на
много други функции и те пък също да са подобни или да имат нещо общо със съвсем други функции.


НЕ знам дали пиша разбрано и моля всеки който нещо не му е ясно или не разбира как трябва да стане
нека си отвори една тема и да пита.
 
Таблицата за user-те трябва да е:
Код:
CREATE TABLE IF NOT EXISTS `users` (
  `user_id` mediumint(8) NOT NULL default '0',
  `user_active` tinyint(1) default '1',
  `username` varchar(25) NOT NULL default '',
  `user_password` varchar(32) NOT NULL default '',
  `user_session_time` int(11) NOT NULL default '0',
  `user_session_page` smallint(5) NOT NULL default '0',
  `user_lastvisit` int(11) NOT NULL default '0',
  `user_regdate` int(11) NOT NULL default '0',
  `user_level` tinyint(4) default '0',
  `user_posts` mediumint(8) unsigned NOT NULL default '0',
  `user_timezone` decimal(5,2) NOT NULL default '0.00',
  `user_style` tinyint(4) default NULL,
  `user_lang` varchar(255) default NULL,
  `user_dateformat` varchar(14) NOT NULL default 'd M Y H:i',
  `user_new_privmsg` smallint(5) unsigned NOT NULL default '0',
  `user_unread_privmsg` smallint(5) unsigned NOT NULL default '0',
  `user_last_privmsg` int(11) NOT NULL default '0',
  `user_emailtime` int(11) default NULL,
  `user_viewemail` tinyint(1) default NULL,
  `user_attachsig` tinyint(1) default NULL,
  `user_allowhtml` tinyint(1) default '1',
  `user_allowbbcode` tinyint(1) default '1',
  `user_allowsmile` tinyint(1) default '1',
  `user_allowavatar` tinyint(1) NOT NULL default '1',
  `user_allow_pm` tinyint(1) NOT NULL default '1',
  `user_allow_viewonline` tinyint(1) NOT NULL default '1',
  `user_notify` tinyint(1) NOT NULL default '1',
  `user_notify_pm` tinyint(1) NOT NULL default '0',
  `user_popup_pm` tinyint(1) NOT NULL default '0',
  `user_rank` int(11) default '0',
  `user_avatar` varchar(100) default NULL,
  `user_avatar_type` tinyint(4) NOT NULL default '0',
  `user_email` varchar(255) default NULL,
  `user_icq` varchar(15) default NULL,
  `user_website` varchar(100) default NULL,
  `user_baner` varchar(100) NOT NULL default '',
  `user_from` varchar(100) default NULL,
  `user_sig` text,
  `user_sig_bbcode_uid` varchar(10) default NULL,
  `user_aim` varchar(255) default NULL,
  `user_yim` varchar(255) default NULL,
  `user_msnm` varchar(255) default NULL,
  `user_occ` varchar(100) default NULL,
  `user_interests` varchar(255) default NULL,
  `user_actkey` varchar(32) default NULL,
  `user_newpasswd` varchar(32) default NULL,
  `editor` int(2) NOT NULL default '0',
  PRIMARY KEY  (`user_id`),
  KEY `user_session_time` (`user_session_time`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
 
Статус
Not open for further replies.

Back
Горе