WIP: kanjidic: split news ichi gai nf into separate tables

This commit is contained in:
2025-06-25 20:50:12 +02:00
parent 7978b74f8d
commit 0ca55f065f
2 changed files with 63 additions and 5 deletions

View File

@@ -43,11 +43,6 @@ CREATE TABLE "JMdict_KanjiElement" (
"entryId" INTEGER NOT NULL REFERENCES "JMdict_Entry"("entryId"),
"orderNum" INTEGER NOT NULL,
"reading" TEXT NOT NULL,
"news" INTEGER CHECK ("news" BETWEEN 1 AND 2),
"ichi" INTEGER CHECK ("ichi" BETWEEN 1 AND 2),
"spec" INTEGER CHECK ("spec" BETWEEN 1 AND 2),
"gai" INTEGER CHECK ("gai" BETWEEN 1 AND 2),
"nf" INTEGER CHECK ("nf" BETWEEN 1 AND 48),
UNIQUE("entryId", "reading"),
UNIQUE("entryId", "orderNum")
) WITHOUT ROWID;
@@ -55,6 +50,31 @@ CREATE TABLE "JMdict_KanjiElement" (
CREATE INDEX "JMdict_KanjiElement_byEntryId_byOrderNum" ON "JMdict_KanjiElement"("entryId", "orderNum");
CREATE INDEX "JMdict_KanjiElement_byReading" ON "JMdict_KanjiElement"("reading");
CREATE TABLE "JMdict_KanjiElementNews" (
"elementId" INTEGER PRIMARY KEY REFERENCES "JMdict_KanjiElement"("elementId"),
"news" INTEGER NOT NULL CHECK ("news" BETWEEN 1 AND 2)
);
CREATE TABLE "JMdict_KanjiElementIchi" (
"elementId" INTEGER PRIMARY KEY REFERENCES "JMdict_KanjiElement"("elementId"),
"ichi" INTEGER NOT NULL CHECK ("ichi" BETWEEN 1 AND 2)
);
CREATE TABLE "JMdict_KanjiElementSpec" (
"elementId" INTEGER PRIMARY KEY REFERENCES "JMdict_KanjiElement"("elementId"),
"spec" INTEGER NOT NULL CHECK ("spec" BETWEEN 1 AND 2)
);
CREATE TABLE "JMdict_KanjiElementGai" (
"elementId" INTEGER PRIMARY KEY REFERENCES "JMdict_KanjiElement"("elementId"),
"gai" INTEGER NOT NULL CHECK ("gai" BETWEEN 1 AND 2)
);
CREATE TABLE "JMdict_KanjiElementNF" (
"elementId" INTEGER PRIMARY KEY REFERENCES "JMdict_KanjiElement"("elementId"),
"nf" INTEGER NOT NULL CHECK ("nf" BETWEEN 1 AND 48)
);
CREATE TABLE "JMdict_KanjiElementInfo" (
"elementId" INTEGER NOT NULL REFERENCES "JMdict_KanjiElement"("elementId"),
"info" TEXT NOT NULL REFERENCES "JMdict_InfoKanji"("id"),
@@ -81,6 +101,36 @@ CREATE TABLE "JMdict_ReadingElement" (
CREATE INDEX "JMdict_ReadingElement_byEntryId_byOrderNum" ON "JMdict_ReadingElement"("entryId", "orderNum");
CREATE INDEX "JMdict_ReadingElement_byReading" ON "JMdict_ReadingElement"("reading");
CREATE TABLE "JMdict_ReadingElementReadingDoesNotMatchKanji" (
"elementId" INTEGER PRIMARY KEY REFERENCES "JMdict_ReadingElement"("elementId"),
"readingDoesNotMatchKanji" BOOLEAN NOT NULL,
);
CREATE TABLE "JMdict_ReadingElementNews" (
"elementId" INTEGER PRIMARY KEY REFERENCES "JMdict_ReadingElement"("elementId"),
"news" INTEGER NOT NULL CHECK ("news" BETWEEN 1 AND 2)
);
CREATE TABLE "JMdict_ReadingElementIchi" (
"elementId" INTEGER PRIMARY KEY REFERENCES "JMdict_ReadingElement"("elementId"),
"ichi" INTEGER NOT NULL CHECK ("ichi" BETWEEN 1 AND 2)
);
CREATE TABLE "JMdict_ReadingElementSpec" (
"elementId" INTEGER PRIMARY KEY REFERENCES "JMdict_ReadingElement"("elementId"),
"spec" INTEGER NOT NULL CHECK ("spec" BETWEEN 1 AND 2)
);
CREATE TABLE "JMdict_ReadingElementGai" (
"elementId" INTEGER PRIMARY KEY REFERENCES "JMdict_ReadingElement"("elementId"),
"gai" INTEGER NOT NULL CHECK ("gai" BETWEEN 1 AND 2)
);
CREATE TABLE "JMdict_ReadingElementNF" (
"elementId" INTEGER PRIMARY KEY REFERENCES "JMdict_ReadingElement"("elementId"),
"nf" INTEGER NOT NULL CHECK ("nf" BETWEEN 1 AND 48)
);
CREATE TABLE "JMdict_ReadingElementRestriction" (
"elementId" INTEGER NOT NULL REFERENCES "JMdict_ReadingElement"("elementId"),
"restriction" TEXT NOT NULL,

View File

@@ -48,6 +48,10 @@ SELECT
- (substr(COALESCE("JMdict_JLPTTag"."jlptLevel", 'N0'), 2) * -5)
AS "score"
FROM "JMdict_ReadingElement"
LEFT JOIN "JMdict_ReadingElementNews" USING ("elementId")
LEFT JOIN "JMdict_ReadingElementIchi" USING ("elementId")
LEFT JOIN "JMdict_ReadingElementSpec" USING ("elementId")
LEFT JOIN "JMdict_ReadingElementGai" USING ("elementId")
LEFT JOIN "JMdict_JLPTTag" USING ("entryId");
CREATE VIEW "JMdict_EntryScoreView_Kanji" AS
@@ -80,6 +84,10 @@ SELECT
- (substr(COALESCE("JMdict_JLPTTag"."jlptLevel", 'N0'), 2) * -5)
AS "score"
FROM "JMdict_KanjiElement"
LEFT JOIN "JMdict_KanjiElementNews" USING ("elementId")
LEFT JOIN "JMdict_KanjiElementIchi" USING ("elementId")
LEFT JOIN "JMdict_KanjiElementSpec" USING ("elementId")
LEFT JOIN "JMdict_KanjiElementGai" USING ("elementId")
LEFT JOIN "JMdict_JLPTTag" USING ("entryId");
CREATE VIEW "JMdict_EntryScoreView" AS