在 JavaScript 项目中改进 SQL Server 数据库的架构
将 Tag
模型添加到你的架构中
¥Add a Tag
model to your schema
在本部分中,你将发展 Prisma 架构,然后使用 prisma migrate dev
生成迁移并将其应用到数据库。
¥In this section, you will evolve your Prisma schema and then generate and apply the migration to your database with prisma migrate dev
.
出于本指南的目的,我们将对 Prisma 架构进行以下更改:
¥For the purpose of this guide, we'll make the following changes to the Prisma schema:
-
创建一个名为
Tag
的新模型,其中包含以下字段:¥Create a new model called
Tag
with the following fields:-
id
:将作为模型主键的自动递增整数¥
id
: an auto-incrementing integer that will be the primary key for the model -
name
:非空String
¥
name
: a non-nullString
-
posts
:链接到Post
模型的隐式多对多关系字段¥
posts
: an implicit many-to-many relation field that links to thePost
model
-
-
使用链接到
Tag
模型的隐式多对多关系字段的tags
字段更新Post
模型¥Update the
Post
model with atags
field with an implicit many-to-many relation field that links to theTag
model
对架构进行更改后,你的架构应类似于以下架构:
¥Once you've made the changes to your schema, your schema should resemble the one below:
model Post {
id Int @id @default(autoincrement())
title String @db.VarChar(255)
createdAt DateTime @default(now()) @db.Timestamp(6)
content String?
published Boolean @default(false)
authorId Int
user User @relation(fields: [authorId], references: [id])
tags Tag[]
}
model Profile {
id Int @id @default(autoincrement())
bio String?
userId Int @unique
user User @relation(fields: [userId], references: [id])
}
model User {
id Int @id @default(autoincrement())
name String? @db.VarChar(255)
email String @unique @db.VarChar(255)
post Post[]
profile Profile?
}
model Tag {
id Int @id @default(autoincrement())
name String
posts Post[]
}
要将 Prisma 架构更改应用到数据库,请使用 prisma migrate dev
CLI 命令:
¥To apply your Prisma schema changes to your database, use the prisma migrate dev
CLI command:
npx prisma migrate dev --name tags-model
该命令将:
¥This command will:
-
为迁移创建新的 SQL 迁移文件
¥Create a new SQL migration file for the migration
-
将生成的 SQL 迁移应用到数据库
¥Apply the generated SQL migration to the database
-
重新生成 Prisma 客户端
¥Regenerate Prisma Client
将生成以下迁移并保存在你的 prisma/migrations
文件夹中:
¥The following migration will be generated and saved in your prisma/migrations
folder:
-- CreateTable
CREATE TABLE [dbo].[Tag] (
[id] SERIAL NOT NULL,
[name] VARCHAR(255) NOT NULL,
CONSTRAINT [Tag_pkey] PRIMARY KEY ([id])
);
-- CreateTable
CREATE TABLE [dbo].[_PostToTag] (
[A] INTEGER NOT NULL,
[B] INTEGER NOT NULL
);
-- CreateIndex
CREATE UNIQUE INDEX [_PostToTag_AB_unique] ON _PostToTag([A], [B]);
-- CreateIndex
CREATE INDEX [_PostToTag_B_index] ON [_PostToTag]([B]);
-- AddForeignKey
ALTER TABLE [dbo].[_PostToTag] ADD CONSTRAINT [_PostToTag_A_fkey] FOREIGN KEY ([A]) REFERENCES [dbo].[Post]([id]) ON DELETE CASCADE ON UPDATE CASCADE;
-- AddForeignKey
ALTER TABLE [dbo].[_PostToTag] ADD CONSTRAINT [_PostToTag_B_fkey] FOREIGN KEY ([B]) REFERENCES [dbo].[Tag]([id]) ON DELETE CASCADE ON UPDATE CASCADE;
恭喜你
¥Congratulations