如何在合金中建立有效的数据库模型?

时间:2018-11-10 16:56:41

标签: modeling alloy

合金新手。我正在尝试建立一个包含用户和一些医疗信息的医疗数据库。

sig User{
    name: one  String,
    surname:  one String,
    socialNumber:  one String,
    address:  one String,
    age: one Int,   
    registration: one UserCredential,
    healthStatus: one HealthInformation
}{
    age>0
}
sig UserCredential{
    user: one String,
    pass: one String,
    mail:  one String
}

sig HealthInformation{}


sig Data4Help{
    users: some User,
}

pred show(d:Data4Help){
    #d.users>1
}

run show for 10

分析仪告诉我模型不一致:

执行“ 10人跑步表演”    解算器= sat4j位宽= 4 MaxSeq = 7 SkolemDepth = 1对称= 20    5448个变量。 510个主要变量。 12578条。 16毫秒    找不到实例。谓词可能不一致。 0毫秒。

你们能告诉我为什么吗?我想要的只是将数据库“ Data4Help”链接到某些用户,该关系的定义可能不正确,但我不知道为什么。 谢谢

1 个答案:

答案 0 :(得分:1)

问题是Alloy的弦乐有些麻烦。默认情况下,字符串签名定义了一组空原子。如果要在模型中使用字符串,则必须使用“您自己的字符串”填充该集合。

请参见How to use String in Alloy?

在模型中,您可以添加一个简单的事实

fact initPoolOfString{ 
   String in "insert"+ "your"+"dummy" + "strings" + "here"
}