Un guide pour débutants sur la création de tables SQL et leur visualisation en tant que classes
Récompense d’août pour les articles sur Global Masters a retenu mon attention, et l'un des sujets proposés m'a semblé très intéressant quant à son utilisation future dans mon enseignement. Voici donc ce que j'aimerais dire à mes étudiants à propos des tables dans IRIS et de leur corrélation avec le modèle objet.
Tout d'abord, InterSystems IRIS dispose d'un modèle de données unifié. Cela signifie que lorsque vous travaillez avec des données, vous n'êtes pas enfermé dans un paradigme unique. Les mêmes données sont accessibles et manipulables comme une table SQL traditionnelle, comme un objet natif, ou même comme un tableau multidimensionnel (global). Cela signifie que lorsque vous créez une table SQL, IRIS crée automatiquement une classe d'objet correspondante. Lorsque vous définissez une classe d'objet, IRIS la rend automatiquement disponible sous forme de table SQL. Les données elles-mêmes ne sont stockées qu'une seule fois dans le moteur de stockage multidimensionnel performant d'IRIS. Le moteur SQL et le moteur objet sont simplement des « optiques » différentes pour visualiser et travailler avec les mêmes données.
Commençons par examiner la corrélation entre le modèle relationnel et le modèle objet :
| Relationnel | Objet |
| Table | Classe |
| Colonne | Propriété |
| Ligne | Objet |
| Clé primaire | Identifiant d'objet |
La corrélation n'est pas toujours exacte, car plusieurs tables peuvent représenter une même classe, par exemple. Mais c'est une règle générale.
Dans cet article, je vais expliquer comment créer une table en listant ses colonnes.
Approche la plus simple :
CREATETABLE [IFNOTEXISTS] table (
column1 type1 [NOTNULL],
column2 type2 [UNIQUE],
column3 type3 [PRIMARY KEY]
...
[CONSTRAINT fKeyName FOREIGN KEY (column) REFERENCES refTable (refColumn)]
)[ ] désigne les parties facultatives.
Créons une table DC.PostType, composée de trois colonnes : TypeID (clé primaire), Name et Description:
CREATE TABLE DC.PostType (
TypeID INT NOT NULL,
Name VARCHAR(20),
Description VARCHAR(500),
CONSTRAINT Type_PK PRIMARY KEY (TypeID)
)En conséquence, nous obtiendrons la classe suivante après avoir exécuté l'instruction SQL ci-dessus :
/// Class DC.PostType Extends%Persistent [ ClassType = persistent, DdlAllowed, Final, Owner = {UnknownUser}, ProcedureBlock, SqlRowIdPrivate, SqlTableName = PostType ]
{
Property TypeID As%Library.Integer(MAXVAL = 2147483647, MINVAL = -2147483648) [ Required, SqlColumnNumber = 2 ];Property Name As%Library.String(MAXLEN = 20) [ SqlColumnNumber = 3 ];Property Description As%Library.String(MAXLEN = 500) [ SqlColumnNumber = 4 ];Parameter USEEXTENTSET = 1;/// Bitmap Extent Index auto-generated by DDL CREATE TABLE statement. Do not edit the SqlName of this index.
Index DDLBEIndex [ Extent, SqlName = "%%DDLBEIndex", Type = bitmap ];/// DDL Primary Key Specification
Index TypePK On TypeID [ PrimaryKey, SqlName = Type_PK, Type = index, Unique ];
Storage Default
{
<Data name="PostTypeDefaultData">
<Value name="1">
<Value>TypeID</Value>
</Value>
<Value name="2">
<Value>Name</Value>
</Value>
<Value name="3">
<Value>Description</Value>
</Value>
</Data>
<DataLocation>^B3xx.DXwO.1</DataLocation>
<DefaultData>PostTypeDefaultData</DefaultData>
<ExtentLocation>^B3xx.DXwO</ExtentLocation>
<IdFunction>sequence</IdFunction>
<IdLocation>^B3xx.DXwO.1</IdLocation>
<Index name="DDLBEIndex">
<Location>^B3xx.DXwO.2</Location>
</Index>
<Index name="IDKEY">
<Location>^B3xx.DXwO.1</Location>
</Index>
<Index name="TypePK">
<Location>^B3xx.DXwO.3</Location>
</Index>
<IndexLocation>^B3xx.DXwO.I</IndexLocation>
<StreamLocation>^B3xx.DXwO.S</StreamLocation>
<Type>%Storage.Persistent</Type>
}
}
Observations clés :
TABLE DC.PostTypeest devenue laClasse DC.PostType.- La classe
Extends %Persistent, qui indique à IRIS de stocker ses données dans la base de données. VARCHARest devenu%String.INTest devenu%Integer.- La contrainte
PRIMARY KEYa créé un index avec le mot-cléPrimaryKey.
Vous pouvez désormais utiliser cette table/classe de n'importe quel côté, par exemple en utilisant SQL :
INSERTINTO DC.PostType (TypeID, Name, Description) VALUES (1, 'Question', 'Ask a question from the Community')La création de tables à l'aide de SQL est bien plus complexe. Veuillez lire la documentation fournie ci-dessous.