|
|
|
| Уважаемые, профессионалы! Помогите создать три таблицы данных, где б вторая таблица зависела от первой, а третья от первой и второй, вот с ключами (первичные и внешние) не могу разобраться, кто может подскажите как они должны выгледеть при создании в таблицах этого случая?Огромное спасибо!!! | |
|
|
|
|
|
|
|
для: xpom
(30.08.2006 в 14:14)
| | Хм... а вы что моделируете таблицами - какие между ними должны быть связи? Можете описать задачу подробнее? | |
|
|
|
|
|
|
|
для: cheops
(30.08.2006 в 16:19)
| | Нужно сделать категории, это первая таблица, затем подкатегории это вторая таблица, а то что находится в подкатегориях это будет третья таблица, вот таким образом я хочу разбить это по таблицам, а вот связать эти таблицы с помощью ключей как-то не получается? | |
|
|
|
|
|
|
|
для: 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;
|
| |
|
|
|
|
|
|
|
для: 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
У меня все будет нормально работать? Порядок расположения таблиц имеет значение или нет? | |
|
|
|
|
|
|
|
для: xpom
(31.08.2006 в 11:48)
| | Параметр TYPE=MyISAM устанавливает тип таблиц по умолчанию MyISAM, можно не указывать и так установиться этот тип (почти никогда другие типы таблиц по умолчанию не используются). default '0' означает, что если поле не получит значение, ему присвоится значение 0, тоже можно не указывать. Да, у вас всё должно работать, порядок таблиц не имеет значения. | |
|
|
|
|
|
|
|
для: cheops
(31.08.2006 в 12:43)
| | Спасибо! Теперь буду к таблицам PHP код прописывать. | |
|
|
|