SurseAldB-通过添加模式信息来提高数据完整性
#编程 #教程 #database #datastructures

在本系列的总结章节中,我们将深入研究SurreAldB模式的可能性有趣的世界,并探讨它们如何将我们的数据完整性提升到新的高度。

您可以为表定义字段。我们将以user表为例。

我们的最初定义是:

-- Define the user table
DEFINE TABLE user SCHEMALESS;

我们现在将添加一些字段定义:

-- Define the user table
DEFINE TABLE user SCHEMALESS;
DEFINE FIELD name ON TABLE user TYPE string;
DEFINE FIELD email ON TABLE user TYPE string;
DEFINE FIELD firstName ON TABLE user TYPE string;
DEFINE FIELD lastName ON TABLE user TYPE string;
DEFINE FIELD createdAt ON TABLE user TYPE datetime;

到目前为止,我们在正确的轨道上。我们已经定义了必要的字段,并且还指定了它们的类型。
但是有一些改进,我们可以做出。

现在,让我们专注于创建的属性。在这种情况下,我们应该建立一个默认值,该值在生成实体时自动捕获创建时间戳。

DEFINE FIELD createdAt ON TABLE user TYPE datetime DEFAULT time::now();

我们还应该增强电子邮件字段。
我们可以做出两个改进。
首先,我们应该将字段类型指定为不仅是通用字符串,因为我们知道它必须遵守电子邮件模式。

DEFINE FIELD email ON TABLE user TYPE string ASSERT string::is::email($value);

其次,我们要确保电子邮件在全球范围内是唯一的。为了确保这一点,我们define a unique index

DEFINE INDEX uniqueEmailIndex ON TABLE user COLUMNS email UNIQUE;

这是我们对用户表的最终定义:

-- Define the user table
DEFINE TABLE user SCHEMALESS;
DEFINE FIELD name ON TABLE user TYPE string;
DEFINE FIELD email ON TABLE user TYPE string ASSERT string::is::email($value);
DEFINE FIELD firstName ON TABLE user TYPE string;
DEFINE FIELD lastName ON TABLE user TYPE string;
DEFINE FIELD createdAt ON TABLE user TYPE datetime DEFAULT time::now();

DEFINE INDEX uniqueEmailIndex ON TABLE user COLUMNS email UNIQUE;

关于我们在各个实体之间建立的关系,避免在同一实体之间进行重复很重要。
在这种情况下,我们可以创建一个唯一的索引来防止特定用户与特定租户的多个连接。

-- prevent linking a user to the same tenant multiple times
DEFINE INDEX tenant_memberIndex
    ON TABLE tenant_member
    COLUMNS in, out UNIQUE;

最后的想法

当我们结论这个系列时,我们只是刮擦了SurreAldB能力的表面,重点关注其图形结构。

SurreAldB拥有一系列令人兴奋的功能和即将发布的公告,使其成为数据库世界中真正引人入胜的独角兽。

处理独特的唱片IDS及其解锁的可能性令人惊奇。
使用一个数据库的关系数据库,NOSQL/文档数据库或专用时间序列数据库之间选择之间选择的自由,同时使用一个数据库可显着简化寿命。
根据您的特定需求来量身定制如何存储和访问数据并根据需要进行混合是前进的道路。

虽然SurreAldB仍处于早期阶段而尚未正式生产准备就绪,但我鼓励您在即将到来的小型(或侧面)项目中尝试一下。

SurreAldB的冒险可能只是您一直在寻找的独特而有意义的体验。