Питер,
Есть некоторые различия между MySQL и MSSQL, которые необходимо учитывать здесь, особенно схемы. Я не слишком уверен, как они работают с MySQL, но похоже, что MSSQL сам по себе почти похож на базу данных.
Схема в MSSQL - это скорее уровень абстракции безопасности, используемый для группировки объектов внутри базы данных. Это то, что не очень широко используется AFAIK, но то, что MS хотела бы продвигать. Я оставил это здесь, и затем объекты создаются в схеме по умолчанию (обычно dbo).
Излишне говорить, что все остальное довольно просто:
-- -----------------------------------------------------
-- Table question
-- -----------------------------------------------------
IF NOT EXISTS ( SELECT *
FROM sys.objects
WHERE name = 'question' )
BEGIN
CREATE TABLE question
(id int IDENTITY(1, 1)
NOT NULL,
text varchar(255) NOT NULL,
PRIMARY KEY (id)) ;
END
-- -----------------------------------------------------
-- Table category
-- -----------------------------------------------------
IF NOT EXISTS ( SELECT *
FROM sys.objects
WHERE name = 'category' )
CREATE TABLE category
(id int IDENTITY(1, 1)
NOT NULL,
name varchar(45) NOT NULL,
adverb varchar(45) NOT NULL,
PRIMARY KEY (Id)) ;
-- -----------------------------------------------------
-- Table answer
-- -----------------------------------------------------
IF NOT EXISTS ( SELECT *
FROM sys.objects
WHERE name = 'answer' )
CREATE TABLE answer
(id int IDENTITY(1, 1)
NOT NULL,
question_id int NULL,
category_id int NULL,
text varchar(60) NULL PRIMARY KEY (Id),
CONSTRAINT fk_answer_question FOREIGN KEY (question_id) REFERENCES question (id) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT fk_answer_category1 FOREIGN KEY (category_id) REFERENCES category (id) ON DELETE NO ACTION ON UPDATE NO ACTION);
CREATE INDEX fk_answer_question ON answer(question_id ASC)
CREATE INDEX fk_answer_category1 ON answer(category_id ASC)
Обратите внимание на следующие изменения:
- AUTO_INCREMENT поменялся местами
для идентичности. Вы указываете начальное значение и приращение
- MSSQL не имеет понятия подписанные или неподписанные целые числа
- Первичный ключ будет создан как кластеризованный индекс по умолчанию
- Индексы будут создаваться как неуникальные и не кластеризованные, если не указано
Имя столбца 'text' является зарезервированным ключевым словом и также должно быть изменено, чтобы избежать проблем с анализом.
Надеюсь, это поможет.