Bounded relational schema normalization, decomposition verification and tuple audits
Dependencies
moon add LuoYunxin1/moonnormal@0.1.0import {
"LuoYunxin1/moonnormal" @normal,
}let s = @normal.parse_schema_text(
"attributes: Student,Course,Tutor\nStudent,Course -> Tutor\nTutor -> Course",
)
let third = s.synthesize_3nf()
let bcnf = s.decompose_bcnf()
let audit = s.audit_plan(bcnf)
// BCNF 无损,但可能不保持 Student,Course -> Tutor。
let report = s.plan_report(bcnf)moon run examples/design
moon run examples/migration
moon run examples/qualitymoon info
moon fmt --check
moon check --target wasm-gc --deny-warn
moon test --target wasm-gc --deny-warn
moon build --target wasm-gc --deny-warn
bash scripts/verify.sh wasm-gc
python scripts/measure.pypub(all) struct LossyWitness {
instance : Table
spurious_row : Array[String]
projected_presence : Array[Bool]
chase : ChaseResult
} derive(Debug)fn Schema::compare_layouts(self : Schema, before : Array[Array[Int]], after : Array[Array[Int]]) -> LayoutDelta raise DesignErrorfn Schema::compare_theory(self : Schema, proposed : Schema, limits? : Limits) -> TheoryDelta raise DesignErrorfn Schema::dependency_locality(self : Schema, relations : Array[Array[Int]], limits? : Limits) -> Array[DependencyLocality] raise DesignErrorfn Schema::dependency_preservation(self : Schema, relations : Array[Array[Int]], limits? : Limits) -> Preservation raise DesignErrorfn Schema::in_normal_form(self : Schema, relation : Array[Int], form : NormalForm, limits? : Limits) -> Bool raise DesignErrorfn Schema::lossless_chase(self : Schema, relations : Array[Array[Int]], limits? : Limits) -> ChaseResult raise DesignErrorfn Schema::lossy_counterexample(self : Schema, relations : Array[Array[Int]], limits? : Limits) -> LossyWitness? raise DesignErrorfn Schema::normal_form_violations(self : Schema, relation : Array[Int], form : NormalForm, limits? : Limits) -> Array[Violation] raise DesignErrorfn Schema::relation_profile(self : Schema, relation : Array[Int], limits? : Limits) -> RelationProfile raise DesignErrorfn Schema::review_migration(self : Schema, before : Plan, after : Plan, limits? : Limits) -> MigrationReview raise DesignErrorfn Schema::validate_chase_witness(self : Schema, result : ChaseResult, limits? : Limits) -> Bool raise DesignErrorfn Schema::verify_chase_trace(self : Schema, relations : Array[Array[Int]], result : ChaseResult, limits? : Limits) -> Bool raise DesignErrorfn Schema::verify_lossy_counterexample(self : Schema, relations : Array[Array[Int]], witness : LossyWitness, limits? : Limits) -> Bool raise DesignErrorfn Table::reconstruct(self : Table, owner : Schema, relations : Array[Array[Int]], limits? : Limits) -> Reconstruction raise DesignErrorpub(all) struct Violation {
relation : Array[Int]
dependency : FD
form : NormalForm
} derive(Eq, Debug)Install
Download zipBounded relational schema normalization, decomposition verification and tuple audits
Dependencies