88CREATE TABLE "Users"( -- Users
99 "Id" NVARCHAR2(38) NOT NULL, -- PK, guid
1010 "UserName" NVARCHAR2(256) NOT NULL,
11+ "NormalizedUserName" NVARCHAR2(256) NOT NULL,
1112 "Email" NVARCHAR2(256) NULL,
13+ "NormalizedEmail" NVARCHAR2(256) NOT NULL,
1214 "EmailConfirmed" NUMBER(3) NOT NULL,
1315 "PasswordHash" NVARCHAR2(2000) NULL,
1416 "SecurityStamp" NVARCHAR2(2000) NULL,
@@ -18,6 +20,7 @@ CREATE TABLE "Users"( -- Users
1820 "LockoutEndDateUtc" TIMESTAMP NULL,
1921 "LockoutEnabled" NUMBER(3) NOT NULL,
2022 "AccessFailedCount" NUMBER(10) NOT NULL,
23+ "TotpAuthenticatorKey" NVARCHAR2(256) NULL,
2124 -- 追加の情報
2225 "ClientID" NVARCHAR2(256) NOT NULL,
2326 "PaymentInformation" NVARCHAR2(256) NULL,
@@ -31,6 +34,7 @@ CREATE TABLE "Users"( -- Users
3134CREATE TABLE "Roles"( -- Roles
3235 "Id" NVARCHAR2(38) NOT NULL, -- PK, guid
3336 "Name" NVARCHAR2(256) NOT NULL,
37+ "NormalizedName" NVARCHAR2(256) NOT NULL,
3438 CONSTRAINT "PK.Roles" PRIMARY KEY ("Id")
3539);
3640
@@ -40,23 +44,31 @@ CREATE TABLE "UserRoles"( -- 関連エンティティ (Users *--- UserR
4044 CONSTRAINT "PK.UserRoles" PRIMARY KEY ("UserId", "RoleId")
4145);
4246
43- CREATE TABLE "UserLogins"( -- Users ---* UserLogins
44- "UserId" NVARCHAR2(38) NOT NULL, -- PK, guid
45- "LoginProvider" NVARCHAR2(128) NOT NULL, -- PK
46- "ProviderKey" NVARCHAR2(128) NOT NULL, -- PK
47+ CREATE TABLE "UserLogins"( -- Users ---* UserLogins
48+ "UserId" NVARCHAR2(38) NOT NULL, -- PK
49+ "LoginProvider" NVARCHAR2(128) NOT NULL, -- * PK
50+ "ProviderKey" NVARCHAR2(128) NOT NULL, -- * PK
4751 CONSTRAINT "PK.UserLogins" PRIMARY KEY ("UserId", "LoginProvider", "ProviderKey")
4852);
4953
5054CREATE SEQUENCE TS_UserClaimID; -- TS_UserClaimID.NEXTVAL
51- CREATE TABLE "UserClaims"( -- Users ---* UserClaims
52- "Id" NUMBER(10) NOT NULL, -- PK (キー長に問題があるため"Id" "NUMBER(10)"を使用)
53- "UserId" NVARCHAR2(38) NOT NULL, -- *PK, guid
54- "Issuer" NVARCHAR2(128) NOT NULL, -- *PK(LoginProvider) *PK(実質的に複合主キー)
55+ CREATE TABLE "UserClaims"( -- Users ---* UserClaims
56+ "Id" NUMBER(10) NOT NULL, -- PK (キー長に問題があるため"Id" "NUMBER(10)"を使用)
57+ "UserId" NVARCHAR2(38) NOT NULL, -- *PK
58+ "Issuer" NVARCHAR2(128) NOT NULL, -- *PK
5559 "ClaimType" NVARCHAR2(1024) NULL,
5660 "ClaimValue" NVARCHAR2(1024) NULL,
5761 CONSTRAINT "PK.UserClaims" PRIMARY KEY ("Id")
5862);
5963
64+ CREATE TABLE "TotpTokens"( -- Users ---* TotpTokens
65+ "UserId" NVARCHAR2(38) NOT NULL, -- PK
66+ "LoginProvider" NVARCHAR2(128) NOT NULL, -- *PK
67+ "Name" NVARCHAR2(128) NOT NULL, -- *PK
68+ "Value" NVARCHAR2(128) NULL,
69+ CONSTRAINT "PK.TotpTokens" PRIMARY KEY ("UserId", "LoginProvider", "Name")
70+ );
71+
6072CREATE TABLE "AuthenticationCodeDictionary"(
6173 "Key" NVARCHAR2(64) NOT NULL, -- PK
6274 "Value" NVARCHAR2(2000) NOT NULL, -- AuthenticationCode
@@ -66,7 +78,7 @@ CREATE TABLE "AuthenticationCodeDictionary"(
6678
6779CREATE TABLE "RefreshTokenDictionary"(
6880 "Key" NVARCHAR2(256) NOT NULL, -- PK
69- "Value" RAW(1024 ) NOT NULL, -- RefreshToken
81+ "Value" NVARCHAR2(2000 ) NOT NULL, -- RefreshToken
7082 "CreatedDate" DATE NOT NULL,
7183 CONSTRAINT "PK.RefreshTokenDictionary" PRIMARY KEY ("Key")
7284);
@@ -78,12 +90,19 @@ CREATE TABLE "CustomizedConfirmation"(
7890 CONSTRAINT "PK.CustomizedConfirmation" PRIMARY KEY ("UserId")
7991);
8092
81- CREATE TABLE "OAuth2Data"( -- OAuth2Data
93+ CREATE TABLE "OAuth2Data"(
8294 "ClientID" NVARCHAR2(256) NOT NULL, -- PK
8395 "UnstructuredData" NVARCHAR2(2000) NULL, -- OAuth2 Unstructured Data
8496 CONSTRAINT "PK.OAuth2Data" PRIMARY KEY ("ClientID")
8597);
8698
99+ CREATE TABLE "FIDO2Data"(
100+ "PublicKeyId" NVARCHAR2(256) NOT NULL, -- PK
101+ "UserName" NVARCHAR2(256) NOT NULL, -- Value
102+ "UnstructuredData" NVARCHAR2(2000) NULL, -- FIDO2 Unstructured Data
103+ CONSTRAINT "PK.FIDO2Data" PRIMARY KEY ("PublicKeyId")
104+ );
105+
87106CREATE TABLE "OAuth2Revocation"(
88107 "Jti" NVARCHAR2(38) NOT NULL, -- PK, guid
89108 "CreatedDate" DATE NOT NULL,
@@ -94,10 +113,12 @@ CREATE TABLE "OAuth2Revocation"(
94113--- UNIQUE INDEX
95114---- Users
96115CREATE UNIQUE INDEX "UserNameIndex" ON "Users" ("UserName" ASC);
97- --CREATE UNIQUE INDEX "ClientIDIndex" ON "Users" ("ClientID" ASC);
116+ ALTER TABLE "Users" ADD CONSTRAINT "NormalizedUserNameIndex" UNIQUE ("NormalizedUserName" ASC);
117+ ALTER TABLE "Users" ADD CONSTRAINT "NormalizedEmailIndex" UNIQUE ("NormalizedEmail" ASC);
98118ALTER TABLE "Users" ADD CONSTRAINT "ClientIDIndex" UNIQUE ("ClientID");
99119---- Roles
100120CREATE UNIQUE INDEX "RoleNameIndex" ON "Roles" ("Name" ASC);
121+ ALTER TABLE "Roles" ADD CONSTRAINT "NormalizedNameIndex" UNIQUE ("NormalizedName" ASC);
101122
102123--- INDEX
103124---- UserRoles
@@ -107,6 +128,8 @@ CREATE INDEX "IX_UserRoles.RoleId" ON "UserRoles" ("RoleId" ASC);
107128CREATE INDEX "IX_UserLogins.UserId" ON "UserLogins" ("UserId" ASC);
108129---- UserClaims
109130CREATE INDEX "IX_UserClaims.UserId" ON "UserClaims" ("UserId" ASC);
131+ ---- TotpTokens
132+ CREATE INDEX "IX_TotpTokens.UserId" ON "TotpTokens" ("UserId" ASC);
110133
111134-- CONSTRAINT
112135---- UserRoles
@@ -116,5 +139,9 @@ ALTER TABLE "UserRoles" ADD CONSTRAINT "FK.UserRoles.Roles_RoleId" FOREIGN KEY("
116139ALTER TABLE "UserLogins" ADD CONSTRAINT "FK.UserLogins.Users_UserId" FOREIGN KEY("UserId") REFERENCES "Users" ("Id") ON DELETE CASCADE;
117140---- UserClaims
118141ALTER TABLE "UserClaims" ADD CONSTRAINT "FK.UserClaims.Users_UserId" FOREIGN KEY("UserId") REFERENCES "Users" ("Id") ON DELETE CASCADE;
142+ ---- TotpTokens
143+ ALTER TABLE "TotpTokens" ADD CONSTRAINT "FK.TotpTokens.Users_UserId" FOREIGN KEY("UserId") REFERENCES "Users" ("Id") ON DELETE CASCADE;
119144---- OAuth2Data
120145ALTER TABLE "OAuth2Data" ADD CONSTRAINT "FK.OAuth2Data.Users_ClientID" FOREIGN KEY("ClientID") REFERENCES "Users" ("ClientID") ON DELETE CASCADE;
146+ ---- FIDO2Data
147+ ALTER TABLE "FIDO2Data" ADD CONSTRAINT "FK.FIDO2Data.Users_UserName" FOREIGN KEY("UserName") REFERENCES "Users" ("UserName") ON DELETE CASCADE;
0 commit comments