Um guia para iniciantes para criar tabelas SQL e vê-las como classes
O artigo do August Article Bounty sobre Global Masters, e um dos tópicos propostos me pareceu bastante interessante para uso futuro em minhas aulas. Então, é isso que eu gostaria de dizer aos meus alunos sobre tabelas no IRIS e como elas se correlacionam com o modelo de objeto.
Primeiro, o InterSystems IRIS possui um modelo de dados unificado. Isso significa que, ao trabalhar com dados, você não está preso a um único paradigma. Os mesmos dados podem ser acessados e manipulados como uma tabela SQL tradicional, como um objeto nativo, ou até mesmo como um array multidimensional (um global). Isso significa que, ao criar uma tabela SQL, o IRIS cria automaticamente uma classe de objeto correspondente. Ao definir uma classe de objeto, o IRIS a torna automaticamente disponível como uma tabela SQL. Os dados em si são armazenados apenas uma vez no eficiente motor de armazenamento multidimensional do IRIS. O motor SQL e o motor de objeto são simplesmente diferentes "lentes" para visualizar e trabalhar com os mesmos dados.
Primeiro, vamos ver a correlação entre o modelo relacional e o modelo de objeto:
| Relacional | Objeto |
| Tabela | Classe |
| Coluna | Propriedade |
| Linha | Objeto |
| Chave primária | Identificador de objeto |
Nem sempre é uma correlação de 1:1, já que você pode ter várias tabelas representando uma classe, por exemplo. Mas é uma regra geral.
Neste artigo, discutirei a criação de uma tabela listando suas colunas.
A abordagem mais básica:
CREATETABLE [IFNOTEXISTS] table (
column1 type1 [NOTNULL],
column2 type2 [UNIQUE],
column3 type3 [PRIMARY KEY]
...
[CONSTRAINT fKeyName FOREIGN KEY (column) REFERENCES refTable (refColumn)]
)[ ] designam as partes opcionais.
Vamos criar uma tabela DC.PostType,que consiste em três colunas: TypeID(chave primária), Name, eDescription:
CREATE TABLE DC.PostType (
TypeID INT NOT NULL,
Name VARCHAR(20),
Description VARCHAR(500),
CONSTRAINT Type_PK PRIMARY KEY (TypeID)
)Como resultado, obteremos a seguinte classe após a execução da instrução SQL acima:
/// 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>
}
}
Principais Observações:
TABLE DC.PostTypese tornouClass DC.PostType.- A classe
Extends %Persistent,que é o que informa ao IRIS para armazenar seus dados no banco de dados. VARCHARse tornou%String.INTse tornou%Integer.- A restrição
PRIMARY KEYcriou umIndexcom a palavra-chavePrimaryKey.
Agora você pode usar esta tabela/classe de qualquer lado, por exemplo, usando SQL:
INSERTINTO DC.PostType (TypeID, Name, Description) VALUES (1, 'Question', 'Ask a question from the Community')Há muito mais sobre a criação de tabelas usando SQL, por favor, leia a documentação fornecida abaixo.
Comments
Heloisa um bom tópico que vale a discussão!
Um ponto muito bom que vale ser ressaltado para a migração para a técnologia Intersystems é ser totalmente compatível com o Microsoft Sql Server, isso traz um ganho na curva de aprendizado.
Mas quando a gente aprende construir as classes literalmente acaba esquecendo que é possível usar o SQL de tão simples que é usar o código para isso.