Kode-sortzailea
Joan tresna-barrako Code Generator fitxara. Fitxak dokumentu osoaren kodea erakusten du ezkerrean, eta haren eskuinean Code Generator izenburua duen aukeren panel bat; bertan aukeratzen dituzu lengoaia, datu-basea, izenen idazkerak eta, helburu batzuetarako, mugatzailea.
Panela berez irekitzen da, salbu eta fitxa lehen aldiz irekitzean editorea 640 px baino estuagoa bada. Panelaren goialdeko Hide options botoiak tolestu egiten du, eta kodearen goiko eskuineko Show options botoiak berriro zabaltzen du. Irekita edo tolestuta geratzen da fitxaz aldatu arren, editorea irekita dagoen bitartean, SQL eskema fitxaren panelarekiko modu independentean, eta ez da inoiz fitxategian gordetzen.
Egin eskuineko klik kodean haren laster-menua irekitzeko: Language, Database, Table Name Case, Column Name Case eta Bracket (Doctrine, JPA eta SeaORM helburuetarako soilik), bakoitza uneko balioa markatzen duen azpimenu batekin; ondoren Options panel, panela tolestu edo irekitzen duena eta panela ikusgai dagoen bitartean markatuta dagoena; eta Save file.
Fitxa hau irekita dagoen bitartean, Bilaketa azkarra paletak Database, Bracket (Doctrine, JPA eta SeaORM helburuetarako soilik), Language, Table Name Case eta Column Name Case komandoak eskaintzen ditu, baita Code Generator: Options panel komandoa ere, panela tolestu edo irekitzen duena.

Kode-ikuspegi bera Taularen propietateak paneleko Code Generator fitxa ere bada; bertan, taula bakar horren kodea sortzen du, dokumentu osoarena sortu beharrean. Han ez du aukeren panelik, eta haren laster-menuak ezarpen berberak aldatzen ditu, baina ez du Options panel ez Save file aukerarik.
Dokumentu osoaren kodea inportazio-sententziekin edo goiburu batekin hasten denean, taula bakarraren kodea taula horrek behar dituenekin hasten da, adibidez PHP helburuan <?php, Swift helburuan import Foundation edo JSON Schema helburuan $schema.
Kodea fitxa irekitzean idazten da, eta berriro lengoaia, datu-basea, izenen idazkeretako bat edo mugatzailea aldatzen den bakoitzean. Fitxa irekita dagoen bitartean diagraman egindako edizio bat, hala nola lankide batena edo kodetze-agente batena, fitxatik irten eta itzultzen zarenean agertzen da, edo ezarpen horietako bat aldatzen denean.
Aukeren panela
Saved in the document epigrafearen azpian, panelak Language, Database, Table Name Case eta Column Name Case zerrendatzen ditu, eta ondoren Bracket, lengoaia Doctrine, JPA edo SeaORM den bitartean. Bakoitza goitibeherako zerrenda bat da, eta aldaketa batek kodea berehala berridazten du.
Hautatutako lengoaiak Database aukera edo izenen idazkerak alde batera uzten dituenean, panelean geratzen dira, lausotuta, azpian Not used by DBML bezalako azalpen batekin, eta oraindik ere alda daitezke.
Save file eta Copy botoiak panelaren oinean daude. Ikus Emaitza gordetzea edo kopiatzea.
Diagramaren beraren ezarpenak dira, laster-menuak eta Bilaketa azkarrak ere aldatzen dituztenak. Database aukera fitxategian gordetzen da beste edozein edizio bezala.
Language, Table Name Case, Column Name Case eta Bracket aukerak Ezarpenak fitxako beren blokeoa desaktibatuta dagoen bitartean soilik gordetzen dira (Bracket Type blokeoa Bracket aukerarako), eta diagrama berri batek blokeo guztiak aktibatuta ditu. Blokeo bat aktibatuta dagoen bitartean, aldaketa batek zure pantailako kodea berridazten du, baina fitxategiak balio blokeatua mantentzen du, eta diagrama balio horrekin irekitzen da berriro. Panelak ez du blokeoaren inolako zantzurik erakusten; aukera bat fitxategian gordetzeko, desaktibatu haren blokeoa. Ikus Blokeoa.
Lengoaia
Hogeita bi helburu onartzen dira, hiru taldetan zerrendatuta: lengoaiak, ORMak eta, azkenik, eskemak, talde bakoitza ordena alfabetikoan. Panelaren zerrendak eta laster-menuak marra bat jartzen dute taldeen artean, baina ez dute bat ere izendatzen:
| Helburua | Taldea | Erlazioak | Indizeak | ON DELETE / ON UPDATE | Gordetzeko luzapena |
|---|---|---|---|---|---|
C# | Lengoaia | — | — | — | .cs |
Go | Lengoaia | — | — | — | .go |
Java | Lengoaia | — | — | — | .java |
Kotlin | Lengoaia | — | — | — | .kt |
PHP | Lengoaia | — | — | — | .php |
Rust | Lengoaia | — | — | — | .rs |
Scala | Lengoaia | — | — | — | .scala |
Swift | Lengoaia | — | — | — | .swift |
TypeScript | Lengoaia | — | — | — | .ts |
Doctrine | ORM | ✓ | ✓ | ON DELETE soilik | .php |
Drizzle | ORM | ✓ | ✓ | ✓ | .ts |
JPA | ORM | ✓ | — | — | .java |
SeaORM | ORM | ✓ | Bakarrak soilik | ✓ | .rs |
Sequelize | ORM | ✓ | ✓ | ✓ | .ts |
SQLAlchemy | ORM | ✓ | ✓ | ✓ | .py |
TypeORM | ORM | ✓ | ✓ | ✓ | .ts |
AML | Eskema | ✓ | ✓ | ✓ | .aml |
DBML | Eskema | ✓ | ✓ | ✓ | .dbml |
GraphQL | Eskema | ✓ | — | — | .graphql |
JSON Schema | Eskema | — | — | — | .json |
Mermaid | Eskema | ✓ | — | — | .mmd |
Zod | Eskema | — | — | — | .ts |
Lehenetsia GraphQL da. Helburu guztiek zutabeak sortzen dituzte; ✓ markek helburu bakoitzak zer gehiago sortzen duen erakusten dute.
Taulak izenaren arabera ordenatuta sortzen dira, ez oihalean duten ordenan, eta indizeak Taularen propietateak paneleko Indexes atalean zerrendatutakoak dira, ez haien gaineko Keys errenkadak. SeaORM helburuak indize bakarrak soilik idazten ditu, eta Mermaid helburuak balio bakarreko zutabe bat UK gisa markatzen du, baina ez du indizerik idazten.
Java, AML, DBML eta Mermaid izan ezik, helburu guztiek gako nagusiko zutabe bat ez nulu gisa idazten dute, Not Null ezarrita duen ala ez. Java helburuak ez du adierazten zutabe batek nulua onartzen duen ala ez, eta AML, DBML eta Mermaid helburuek marka diagraman dagoen bezala mantentzen dute.
Helburu batzuek idazten dutena:
PHP: mota esplizituko propietate publikoak dituzten klase arruntak,<?phpetadeclare(strict_types=1);lerroekin hasita.Doctrine: atributuak dituzten Doctrine ORM 3 entitateak, DBAL 4.2 edo berriagorako, zutabe bakoitza bere DBAL motarekin eta hautatutako datu-baserako aukerekin.Rust:pub structbat taula bakoitzeko, motak bide-izen osoarekin idatzita, adibidezchrono::NaiveDateTimeedorust_decimal::Decimal,uselerrorik gabe.SeaORM: formatu trinkoko SeaORM 2.0 entitateak, taula bakoitzapub modbat; beraz, testu osoa fitxategi bakar gisa konpilatzen da.Swift:Codable,Hashable,Sendablestruct bat taula bakoitzeko; Swift 6.1 edo berriagoa behar du.TypeScript:export interfacebat taula bakoitzeko, errenkada JSON gisa deskribatzen duena,Zodeskemak egiten duen bezala: data edo ordu batstringbat da, eta nulua onartzen duen zutabe batT | nullda.Zod: Zod 4 errenkada-eskema bat taula bakoitzeko eta hark ondorioztatzen duen mota, txertatze-eskemarik eta erlaziorik gabe.JSON Schema: JSON Schema draft 2020-12 bertsioko dokumentu bakar bat, taula bakoitzeko errenkada-eskema batekin$defsatalaren azpian.Mermaid:erDiagrambat, GitHubek bistaratzen duen motakoa; taula bakoitza entitate bat da, zutabe guztiak beren motarekin eta dagokienPK,FKedoUKmarkarekin zerrendatzen dituena, eta erlazio bakoitza bere bi taulen arteko marra bat.
AML, DBML eta GraphQL joan-etorriko formatuak dira: bakoitza inportazio-iturri bat ere bada. Ikus Fitxategiak inportatzea edo esportatzea. Gainerako eskemak, JSON Schema, Mermaid eta Zod, irteerarako soilik dira.
DBML helburuak taula bakoitzaren kolorea headercolor gisa idazten du, eta, dokumentu osoaren kodean, TableGroup bloke bat Ref sententzien ondoren, taula bat duen taula-talde bakoitzeko. AML helburuak taula baten kolorea AMLren kolore-izenen artean hurbilena erabiliz idazten du.
ON DELETE eta ON UPDATE
Erlazio baten ON DELETE eta ON UPDATE ekintzak haren laster-menutik ezartzen dira. Ikus ON DELETE eta ON UPDATE.
Lengoaia ataleko taulako ON DELETE / ON UPDATE zutabean ✓ duten helburuek erlazio batek ezartzen dituen ekintzak idazten dituzte; Not set balioan utzitako ekintza batek ez du ezer idazten.
ORM helburuek zein ekintza mantentzen dituzten hautatutako datu-basearen araberakoa da; AML eta DBML helburuek, berriz, guztiak mantentzen dituzte. Ikus Datu-basea.
Doctrinehelburuak ON DELETE soilik idazten du, Doctrinek ez baitu ON UPDATE aukerarik.onDelete: 'CASCADE'gehitzen dio jabe-aldekoManyToOneedoOneToOneerlazioaren#[ORM\JoinColumn]bakoitzari, adibidez#[ORM\JoinColumn(name: 'user_id', referencedColumnName: 'id', nullable: false, onDelete: 'CASCADE')], eta ez dio ezer gehitzen alderantzizko aldekoOneToManyedoOneToOneerlazioari. Gako nagusia ez den balio bakarreko zutabe baterako erlazio bat zutabe arrunt gisa geratzen da, eta Doctrinek asoziaziorik gabe mapatzen ditu zutabe horiek; beraz, ez du ekintzarik idazten.Drizzlehelburuak minuskulaz idazten ditu..references()deian aukera gisa doaz, adibidez{ onDelete: "cascade", onUpdate: "set null" }; zutabe anitzeko gako batek jasotzen duenforeignKey()dei batean, kateatuta doaz, adibidez.onDelete("restrict").onUpdate("no action").SeaORMhelburuak taula umearenbelongs_toerlazioan idazten ditu, ON UPDATE lehenik, SeaORMren izenekin (NoAction,Cascade,SetNull,SetDefaultetaRestrict), adibidezon_update = "Cascade", on_delete = "SetNull". Taula gurasoarenhas_oneedohas_manyerlazioak ez du bat ere jasotzen.SequelizehelburuakonDelete: "CASCADE"etaonUpdatesarrerak idazten ditu bi asoziazio-deietan:hasManyedohasOnedeian, etabelongsTodeian. Zutabe anitzeko gako batek ez du asoziazio-deirik jasotzen; beraz,Sequelizehelburuak ez du ekintzarik idazten harentzat.SQLAlchemyhelburuakondelete="CASCADE"etaonupdateargumentuak pasatzen dizkioForeignKey()funtzioari zutabe bakarreko gako baterako, etaForeignKeyConstraint()funtzioari zutabe anitzeko gako baterako.TypeORMhelburuakonDelete: "CASCADE"etaonUpdateaukerak idazten ditu jabe-aldeko@ManyToOneedo@OneToOnedekoratzailean, inoiz ez alderantzizko aldean. Beti uzten du kanpoanSET DEFAULT, TypeORMekDEFAULTgisa idatziko lukeelako, eta datu-base batek ere ez du hori onartzen.DBMLhelburuak ezarpenak gehitzen dizkioRefsententziari, adibidez[delete: set null, update: no action].AMLhelburuak ekintza bat duen erlazio bat propietateak dituenrelsententzia independente gisa idazten du, adibidez{onDelete: cascade, onUpdate: "set null"}, bere zutabearen lerroan bertan idatzi beharrean.
JPA helburuak ez du bat ere idazten: JPA arruntak ez du horietarako aukerarik, eta sortzaileak ez du Hibernateren @OnDelete anotazioa erabiltzen. Mermaid helburuak ere ez du bat ere idazten, erDiagram lerro batek ez baitu horietarako tokirik.
Taula bakarra erakusten duen Taularen propietateak paneleko Code Generator fitxan, DBML helburuak ez du Ref sententziarik idazten, ezta AML helburuak rel sententziarik ere; beraz, bietako batek ere ez ditu ekintzak erakusten han. AML helburuak ekintzak dituen zutabe bakarreko erlazio bat bere zutabearen lerroan mantentzen du, ekintzarik gabeko bat bezala. Mermaid helburuak ez du inolako erlazio-marrarik idazten han. Doctrine eta SeaORM helburuek dokumentu osoan bezalako entitate bera idazten dute han, ekintzak barne.
Izenen idazkera
Table Name Case eta Column Name Case aukera bakoitzak Pascal, Camel, Snake eta None balioak onartzen ditu.
Balio lehenetsiak Pascal taula-izenetarako eta Camel zutabe-izenetarako dira. None balioak izen bat diagraman idatzita dagoen bezala sortzen du.
Idazkera guztietan, helburuaren lengoaiak erreserbatzen duen izen bat ihes-ikur batekin idazten da lengoaia horrek hala egiteko modua duenean, adibidez C# lengoaian @class edo Rust lengoaian r#type, eta izena aldatzen zaio modurik ez duenean, adibidez Java lengoaian class_.
AML, DBML eta Mermaid helburuek bi ezarpenak alde batera uzten dituzte, eta beti diagramako izenak sortzen dituzte.
SeaORM helburuak ere alde batera uzten ditu: eremuei eta moduluei snake case idazkeran ematen die izena, SeaORMek berriro irakurtzen duen forman, eta gordetako izenak table_name atributuan eta, desberdinak direnean, column_name atributuan ematen ditu.
Lau helburu horietarako, panelak bi zerrendak lausotzen ditu, azpian Not used by azalpenarekin.
Datu-basea
Datu motak hautatutako datu-basearen arabera ebazten dira. Ikus Datu-baseak.
Aukeratu fitxa honetan panelaren Database zerrendatik, laster-menuko Database aukeratik edo Bilaketa azkarretik, eta kodea berehala berridazten da. Diagramaren datu-base ezarpen bakarra da, oihalaren laster-menuak eta SQL eskema fitxak ezartzen duten bera; beraz, hemen egindako aldaketa bat han ere agertzen da.
Drizzle helburuak ezarpen beretik hartzen du bere dialektoa: pgTable PostgreSQL datu-baserako, mysqlTable MySQL eta MariaDB datu-baseetarako, sqliteTable SQLite datu-baserako, eta pgTable beste datu-base guztietarako.
SeaORM helburuak column_type bat idazten du, bestela SeaORMek zutabe mota desberdin bat sortuko lukeen kasuetan, PostgreSQL, MySQL, MariaDB edo SQLite datu-baseetan, eta bat ere ez MSSQL, Oracle, Snowflake edo Databricks datu-baseetan, SeaORMek ez baitu horietarako backendik.
Hautatutako datu-baseak erabakitzen du, halaber, ORM helburuek zein ON DELETE eta ON UPDATE ekintza idazten dituzten.
Doctrine, SeaORM, Sequelize, SQLAlchemy eta TypeORM helburuek datu-base horren SQL eskemak kanpoan uzten duen edozein ekintza uzten dute kanpoan, adibidez SET DEFAULT MySQL eta MariaDB datu-baseetan, RESTRICT MSSQL datu-basean, edo NO ACTION ez den ekintza oro Snowflake eta Databricks datu-baseetan; beraz, datu-basearen lehenetsia aplikatzen da. Zerrenda osoa ON DELETE eta ON UPDATE atalean dago.
Drizzle helburuak, haren ordez, idazten duen dialektoari jarraitzen dio: mysqlTable kodeak SET DEFAULT uzten du kanpoan; pgTable eta sqliteTable kodeek, berriz, ekintza guztiak mantentzen dituzte, MSSQL, Oracle, Snowflake eta Databricks datu-baseetarako idazten duen pgTable kodea barne.
AML, DBML eta Mermaid helburuak dira salbuespena: datu mota bakoitza diagraman idatzita dagoen bezala sortzen dute; beraz, datu-basearen ezarpenak ez du haien irteera aldatzen, eta panelak Database aukera lausotzen du haientzat. AML eta DBML helburuek erlazio batek ezartzen dituen ekintza guztiak idazten dituzte, eta Mermaid helburuak ez du bat ere idazten.
Mugatzailea
Bracket aukera panelean, laster-menuan eta Bilaketa azkarrean eskaintzen da, lengoaia Doctrine, JPA edo SeaORM den bitartean soilik.
SQL eskema fitxako mugatzailearen ezarpen bera da; beraz, hemen egindako aldaketa batek SQL eskemak izenak komatxo artean nola jartzen dituen ere aldatzen du. Ikus SQL eskema. SingleQuote, DoubleQuote, Backtick eta None balioak eskaintzen ditu, eta None balioarekin hasten da.
Doctrine:Noneez den edozein mugatzailerekin, taulen, zutabeen eta join zutabeen izen guztiak alderantzizko komatxoen artean jartzen dira, horrela markatzen baitu Doctrinek komatxo artean jarri beharreko izen bat, adibidez#[ORM\Table(name: '`order`')].Nonebalioarekin, behar duen izena soilik jartzen da horrela: datu-base batek erreserbatzen duen hitz bat, ASCII identifikatzaile arrunt bat ez den izen bat, edo komatxo artean idatzitako izen bat.JPA:Noneez den edozein mugatzailerekin, hitz erreserbatua den taula-izen bat komatxo artean jartzen da@Tableanotazioaren barruan, adibidez@Table(name = "\"user\"").Nonebalioarekin, komatxorik gabe uzten da, SQL eskemak uzten duen bezala.SeaORM:Nonebalioarekin, izenak datu-baseak gordetzen dituen bezala idazten dira: puntu bat duen taula-izen batschema_nameetatable_nameatributuetan zatitzen da, eta PostgreSQL datu-basean komatxorik gabeko izen bat minuskuletara bihurtzen da. Beste edozein mugatzailerekin, izen bat osorik mantentzen da, idatzi bezala.
Emaitza gordetzea edo kopiatzea
Save file aukerak, aukeren panelaren oinean edo laster-menuan, erakutsitako kodea fitxategi gisa gordetzen du.
Esportazio guztien izen-eredu bera du, <database name>-<timestamp>, eta horren ondoren Lengoaia ataleko taulako luzapena, adibidez shop-2026-10-12T04_05_06.ts; zure ostalarian esportazio guztiak gordetzen diren lekuan gordetzen da. Ikus Esportatzea. Java eta JPA helburuek klase guztiak .java fitxategi bakar batean jartzen dituzte, fitxak erakusten dituen bezala.
Export menuak ez du Kode-sortzailearen aukerarik, eta Taularen propietateak paneleko Code Generator fitxak ezin du fitxategirik gorde.
Kodea kopiatzeko, egin klik panelaren oineko Copy botoian, edo pasatu sagua kodearen gainetik eta egin klik haren goiko eskuineko kopiatzeko botoian; Taularen propietateak panelean, hori da modu bakarra.
Egiaztatze-marka bat duen Copied! jakinarazpen batek berresten du bi segundoz. Nabigatzaileak edo ostalariak arbela ukatzen badu, abisu-ikur bat duen Couldn't copy to the clipboard jakinarazpen batek adierazten du hori, haren ordez. Berriro kopiatzean, jakinarazpena ordezten da, beste bat gehitu beharrean.
Testua hautatu ere egin daiteke; beraz, behar duzun zatia soilik har dezakezu.