Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помощь в создании таблиц MySQL?
 
 автор: xpom   (30.08.2006 в 14:14)   письмо автору
 
 

Уважаемые, профессионалы! Помогите создать три таблицы данных, где б вторая таблица зависела от первой, а третья от первой и второй, вот с ключами (первичные и внешние) не могу разобраться, кто может подскажите как они должны выгледеть при создании в таблицах этого случая?Огромное спасибо!!!

   
 
 автор: cheops   (30.08.2006 в 16:19)   письмо автору
 
   для: xpom   (30.08.2006 в 14:14)
 

Хм... а вы что моделируете таблицами - какие между ними должны быть связи? Можете описать задачу подробнее?

   
 
 автор: xpom   (30.08.2006 в 18:44)   письмо автору
 
   для: cheops   (30.08.2006 в 16:19)
 

Нужно сделать категории, это первая таблица, затем подкатегории это вторая таблица, а то что находится в подкатегориях это будет третья таблица, вот таким образом я хочу разбить это по таблицам, а вот связать эти таблицы с помощью ключей как-то не получается?

   
 
 автор: cheops   (30.08.2006 в 19:42)   письмо автору
 
   для: xpom   (30.08.2006 в 18:44)
 

Можно поступить следующим образом
CREATE TABLE catalog (
  id_catalog int(11) NOT NULL auto_increment,
  name tinytext NOT NULL,
  PRIMARY KEY  (id_catalog)
) TYPE=MyISAM;
CREATE TABLE position (
  id_position int(11) NOT NULL auto_increment,
  name tinytext NOT NULL,
  id_subcatalog int(11) NOT NULL default '0',
  PRIMARY KEY  (id_position),
  KEY id_subcatalog (id_subcatalog)
) TYPE=MyISAM;
CREATE TABLE subcatalog (
  id_subcatalog int(11) NOT NULL auto_increment,
  name tinytext NOT NULL,
  id_catalog int(11) NOT NULL default '0',
  PRIMARY KEY  (id_subcatalog),
  KEY id_catalog (id_catalog)
) TYPE=MyISAM;

   
 
 автор: xpom   (31.08.2006 в 11:48)   письмо автору
 
   для: cheops   (30.08.2006 в 19:42)
 

Можно у вас спросить что делает TYPE=MyISAM и default '0'?
А если я поступлю вот таким образом:
code
СREATE TABLE Catalog (
CatalogID INTEGER NOT NULL AUTO_INCREMENT,
CatalogName VARCHAR(30),
Primary Key (CatalogID)
);
INSERT INTO Catalog (CatalogName) VALUES
('Программы'),
('Игры');
CREATE TABLE Subcatalog(
SubcatalogID INTEGER NOT NULL AUTO_INCREMENT,
Catalog INTEGER NOT NULL,
SubcatalogName VARCHAR(30),
Primary Key (SubcatalogID),
FOREIGN KEY (Catalog) REFERENCES Catalog(CatalogID)
);
INSERT INTO Subcatalog(Caalog, SubcatalogName) VALUES
('1', 'Компьютерные'),
('1', 'Бесплатные'),
('2', 'Стратегии'),
('2', 'Action');
CREATE TABLE Position (
PositionID INTEGER NOT NULL AUTO_INCREMENT,
Subcatalog INTEGER NOT NULL,
URL VARCHAR(150),
Name VARCHAR(150),
About VARCHAR(255),
Primary Key (PositionID),
FOREIGN KEY (Subcatalog) REFERENCES Subcatalog(SubcatalogID)
);
/code
У меня все будет нормально работать? Порядок расположения таблиц имеет значение или нет?

   
 
 автор: cheops   (31.08.2006 в 12:43)   письмо автору
 
   для: xpom   (31.08.2006 в 11:48)
 

Параметр TYPE=MyISAM устанавливает тип таблиц по умолчанию MyISAM, можно не указывать и так установиться этот тип (почти никогда другие типы таблиц по умолчанию не используются). default '0' означает, что если поле не получит значение, ему присвоится значение 0, тоже можно не указывать. Да, у вас всё должно работать, порядок таблиц не имеет значения.

   
 
 автор: xpom   (31.08.2006 в 14:59)   письмо автору
 
   для: cheops   (31.08.2006 в 12:43)
 

Спасибо! Теперь буду к таблицам PHP код прописывать.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования