我有一個場景來設計一個數據庫Java API Documentation,其中我必須在給定的一段代碼中提供有關每個類和方法的信息。例如,考慮:如何爲結構良好的Java API文檔設計數據庫?
1. main()
2. {
3. String foo="test";
4. foo.substring(1,2);
5. }
在這裏,我必須展示從Java文檔類String
和方法substring
文檔(中的類/方法可以是任何有效類/方法)。
我的觀察:
的類可以重複在不同的包,所以他們不能是唯一的。方法也一樣。 方法名foo()
可以是:
1)這個類
2)所述的方法重寫一些父類
3)的方法簡單地繼承的方法。
有了這個信息,我有如下表:
1)
CREATE TABLE "JAVACLASSDESCRIPTION"
( "CLASSFULLNAME" VARCHAR2(400) NOT NULL ENABLE,
"CLASSNAME" VARCHAR2(400),
"CLASSDEFINATION" CLOB,
"CLASSDECLARATION" CLOB,
"INHERITEDCLASSES" CLOB,
CONSTRAINT "JAVACLASSDESCRIPTION_PK" PRIMARY KEY ("CLASSFULLNAME") ENABLE
) ;
INHERITEDCLASSES
是一個多值attribute.I知道這是一個非常可憐的東西,但我有原因。 1)首先檢查該方法是否可用於JAVAMETHODDESCRIPTION
表(可以是類方法本身,也可以是覆蓋方法)。 2)如果不是,它必須是爲某些父類繼承的方法。因此,我們必須表明,該家長的方法的文檔class.To保存多個搜索,INHERITEDCLASSES
包含數值如下(對於一些隨機類):
java.lang.Object: clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
,這樣它的父類是其次java.lang.Object
方法列表,這樣很容易匹配方法名稱。
2)
CREATE TABLE "JAVAMETHODDESCRIPTION"
( "CLASSFULLNAME" VARCHAR2(400) NOT NULL ENABLE,
"METHODNAME" VARCHAR2(400) NOT NULL ENABLE,
"METHODDECLARATION" VARCHAR2(400),
"METHODDEFINATION" CLOB
) ;ALTER TABLE "JAVAMETHODDESCRIPTION" ADD CONSTRAINT "JAVAMETHODDESCRIPTION_FK" FOREIGN KEY ("CLASSFULLNAME")
REFERENCES "JAVACLASSDESCRIPTION" ("CLASSFULLNAME") ON DELETE CASCADE ENABLE;
輸出示例:
我知道有很多的設計,我issues.How可以提高我的數據庫設計的?
編輯:
關於多值項,如果分解到另一個表可能導致到冗餘entries.For如。 Object
班是所有人的超班。
如何創建它們作爲對象? – 2015-02-11 15:30:55
我不知道你是什麼意思。是'他們'?你想如何在對象數據庫中存儲對象? – piotrek 2015-02-11 15:58:27
創建嵌套對象來代替多值屬性(存儲爲類型對象) – 2015-02-12 21:09:56