Tietomalli
Sovelluksen tietokannan luominen, CRM:n kolme taulua ja malli suhteineen, jota alustan muut osat tulevat käyttämään.
Sovellus Asiakashallinta on olemassa ja se on tyhjä. Tämä vaihe antaa
sille perustuksen: tietokannan, jossa tietueet elävät, taulut contas,
contactos ja oportunidades sekä mallin, joka liittää kaiken yhteen —
kartan, jota API:t, näytöt ja skriptit lukevat tästä eteenpäin.
Tämän sivun lopussa sinulla on oikeaa dataa: kolme luotua taulua, jotka on liitetty toisiinsa, ja konsoli, jossa kyselyt palauttavat rivejä.
Kaksi kerrosta, joita ei kannata sekoittaa
Keplin käsittelee dataa kahdessa päällekkäisessä kerroksessa. Ne tekevät eri asioita, ja niihin kosketaan eri paikoissa:
| Kerros | Mikä se on | Missä siihen kosketaan |
|---|---|---|
| Tietolähde | Itse tietokanta — yhteys, taulut, sarakkeet, rivit. | Paneeli Data ▸ Tietolähteet |
| Malli | Sen tietokannan muotokuva alustan sisällä: entiteetit, kentät selkonimineen ja suhteet. | Tietolähteen välilehti, mallin canvasilla |
Ero on käytännöllinen. Sarakkeen luominen koskee tietokantaan. Taulun tuominen malliin ei koske tietokantaan mitenkään — se vain kertoo alustalle ”tämä taulu kiinnostaa minua, ja näin sitä luetaan”. Malli on se, joka syöttää sovelluksen GraphQL-API:a, taulu-API:ta ja niiden kautta näyttöjä.
Nota
Tässä oppaassa tietokanta luodaan alusta, sovelluksen sisälle. Jos organisaatiollasi on jo tietokanta, jossa asiakkaat ovat, reitti on sama askeleesta ”Taulujen tuominen malliin” eteenpäin — rekisteröi yhteys ja tuo ne taulut, jotka ovat olemassa. Luku Tietokantojen yhdistäminen käsittelee tuota tapausta.
Tietolähteen Dados CRM luominen
Ensimmäinen askel on rekisteröidä sovelluksen tietokanta. Koska emme aio yhdistää mitään ulkoista, käytämme sitä tyyppiä, jonka alusta luo ja säilyttää itse sovelluksen mukana: se ei kysy palvelinta, porttia, käyttäjää eikä salasanaa.
Valitse sovelluksen työtilassa paneeli Data sivupalkin alareunasta.
Napsauta osiossa Tietolähteet painiketta + (Uusi tietolähde). Avautuu valintaikkuna Uusi tietolähde — ”Yhdistä tietokanta tähän sovellukseen. Kaikki on salattu levossa.”
Kirjoita kohtaan Sisäinen nimi teksti
Dados CRM. Juuri tällä nimellä — täsmälleen tällä — API:t ja skriptit viittaavat yhteyteen myöhemmin oppaassa.Avaa lista Tyyppi. Se näyttää kaikki tuetut tietokantamoottorit; valitse paikallinen tietokanta, se joka säilytetään sovelluksen mukana. Huomaa, mitä seuraavaksi tapahtuu: palvelimen, portin, käyttäjän ja salasanan kentät katoavat — ei ole mitään yhdistettävää.

Tietokantatyyppien lista valintaikkunassa Uusi tietolähde: kuusi tuettua moottoria. Jäljelle jää yksi kenttä, Tuo tietokanta (valinnainen). Jätä se tyhjäksi: ”Ilman tiedostoa luodaan tyhjä tietokanta.” Sitä me haluammekin.
Napsauta Testaa yhteys varmistukseksi — vastaus on Yhteys OK.
Napsauta Luo. Tietolähde ilmestyy puuhun ja sen välilehti avautuu heti, mallin canvas mukanaan — vielä tyhjänä.

Atenção
Sisäinen nimi on tunniste, ei nimilappu. Sen muuttaminen myöhemmin
pakottaa käymään läpi skriptit, jotka kutsuvat db("Dados CRM"), ja
SQL-vaiheet, jotka valitsivat yhteyden vanhalla nimellä.
Taulun contas luominen
Kun tietolähde on luotu, taulut tehdään alustalta poistumatta.
- Avaa puussa tietolähteen Dados CRM valikko ⋯ ja valitse Uusi taulu.
- Kirjoita kohtaan Taulun nimi teksti
contas. Jätä Skeema (valinnainen) tyhjäksi. - Kirjoita kohtaan Taulun kuvaus teksti
Empresas clientes e potenciais clientes. Se on valinnainen, mutta juuri sen luet vuoden kuluttua. - Lista Sarakkeet tuo jo mukanaan sarakkeen
id, tyyppiäinteger, jossa Pääavain (PK) ja Automaattinen kasvatus ovat päällä. Jätä se sellaisenaan — se on jokaisen tietueen identiteetti. - Napsauta Sarakkeet-osion + jokaista uutta saraketta varten ja täytä Nimi, Tyyppi ja kytkimet. Alla oleva taulukko kertoo, mitä kirjoittaa.
- Vahvista painikkeella Luo taulu. Taulu syntyy tietokantaan ja ilmestyy objektipuuhun.

Taulun contas sarakkeet:
| Sarake | Tyyppi | Sallii NULL | Mihin se on |
|---|---|---|---|
id |
integer |
ei | Pääavain, automaattisella kasvatuksella |
nome |
text |
ei | Yrityksen nimi |
nif |
text |
kyllä | Y-tunnus |
sector |
text |
kyllä | Elintarvike, Teknologia, Terveys… |
cidade |
text |
kyllä | Missä yritys on |
telefone |
text |
kyllä | Yleinen puhelin |
email |
text |
kyllä | Yleinen sähköposti |
estado |
text |
ei | ativo, prospeto tai inativo |
Dica
Sallii NULL-arvon pois päältä tarkoittaa pakollinen tietokannassa. Varaa se sille, mikä on todella pakollista — yrityksen nimi, se asiakkuus johon yhteyshenkilö kuuluu. Kentän, joka on tänään valinnainen ja huomenna pakollinen, muuttaa hetkessä; toiseen suuntaan joutuu siivoamaan dataa.
Taulujen contactos ja oportunidades luominen
Toista sama ele — tietolähteen valikko ⋯ ▸ Uusi taulu — vielä kaksi kertaa.
contactos (kuvaus: Pessoas de contacto de cada conta):
| Sarake | Tyyppi | Sallii NULL | Mihin se on |
|---|---|---|---|
id |
integer |
ei | Pääavain, automaattisella kasvatuksella |
nome |
text |
ei | Henkilön nimi |
cargo |
text |
kyllä | Toimitusjohtaja, Ostopäällikkö… |
email |
text |
kyllä | |
telefone |
text |
kyllä | |
conta_id |
integer |
ei | Asiakkuus, johon henkilö kuuluu |
oportunidades (kuvaus: Negócios em curso, por fase):
| Sarake | Tyyppi | Sallii NULL | Mihin se on |
|---|---|---|---|
id |
integer |
ei | Pääavain, automaattisella kasvatuksella |
titulo |
text |
ei | Kaupan nimi |
conta_id |
integer |
ei | Kaupan asiakkuus |
valor |
real |
kyllä | Arvo euroina — desimaaliluku |
fase |
text |
ei | Kaupan vaihe (katso alta) |
data_fecho |
text |
kyllä | Arvioitu päätöspäivä muodossa VVVV-KK-PP |
responsavel |
text |
kyllä | Kaupan vastuuhenkilö |
Sarake fase on suljettu lista arvoja. Se säilytetään tekstinä, ja
mahdolliset arvot ovat aina nämä kuusi:
| Säilytetty arvo | Mitä se tarkoittaa |
|---|---|
prospecao |
Varsinaista keskustelua ei ole vielä käyty |
qualificacao |
Kiinnostusta on ja selvitämme, sopiiko se |
proposta |
Tarjous toimitettu |
negociacao |
Ehdoista keskustellaan |
fechada_ganha |
Kauppa voitettu |
fechada_perdida |
Kauppa menetetty |
Nota
Säilytämme ”teknisen” arvon (fechada_ganha) ja näytämme näytöllä kauniin
nimikkeen (”Voitettu”). Juuri tuo erottelu saa seuraavan vaiheen
kanban-taulun toimimaan: kukin taulun sarake on yksi näistä arvoista, omalla
nimikkeellään ja värillään. Sarakkeet estado (asiakkuuksissa) ja fase
noudattavat samaa ajatusta.
Taulun rakenteen tarkistaminen ja muuttaminen
Tyyppi meni väärin, sarake jäi puuttumaan, nimi ei ole paras. Mikään näistä ei ole lopullista:
- Avaa puussa taulun valikko ⋯ ja valitse Muokkaa rakennetta.
- Valintaikkunassa on kaksi välilehteä: Sarakkeet ja Indeksit. Yläreunassa ovat Nimi tietokannassa, Selkonimi (sovellukset) — se nimi, jonka näytöt näyttävät — ja kuvaus.
- Napsauta saraketta vasemmalla muokataksesi sitä oikealla, tai käytä +-painiketta lisäämiseen. Uudet sarakkeet merkitään tekstillä ”Uusi sarake — luodaan, kun muutokset otetaan käyttöön.”; poistetut sarakkeet saavat merkinnän ”Merkitty poistettavaksi (DROP) käyttöönoton yhteydessä.”, ja poisto perutaan niin kauan kuin muutoksia ei ole otettu käyttöön.
- Napsauta Ota muutokset käyttöön.

Atenção
Sarakkeen poistaminen poistaa sen datan. Alusta suorittaa muutoksen vasta kun painat Ota muutokset käyttöön — siihen asti kaikki on luonnos, ja valintaikkunan sulkeminen ei riko mitään.
Datan katsominen ja siementäminen
Objektipuussa on mallin alla konsoli, ja juuri sen kautta dataa kurkitaan (tai siemennetään):
- Avaa taulun valikko ⋯ ja valitse Näytä data. SQL-konsoli
avautuu alareunaan, ja siinä on valmiina kyseiselle taululle sopiva
select. - Napsauta Suorita. Tulokset ilmestyvät oikealle, rivimäärän ja Suodata…-kentän kanssa.
- Ensimmäisten rivien lisäämiseksi kirjoita konsoliin haluamasi
insertit ja suorita. Se on nopein tapa saada esimerkkidataa ennen kuin on näyttöjä, joilla sitä luodaan.

Taulujen tuominen malliin
Taulut ovat olemassa, mutta alusta ei vielä tiedä haluavansa käyttää niitä. Juuri sen tuonti tekee:
- Laajenna puussa Dados CRM ▸ Taulut. Kaikki kolme ovat siellä.
- Avaa kunkin kohdalla valikko ⋯ ja valitse Tuo malliin — tai vedä taulu puusta mallin canvasille, mikä on sama asia.
- Kukin taulu muuttuu kortiksi canvasilla: entiteetiksi. Kortti näyttää kentät, kunkin tyypin ja merkinnän PK pääavaimen kohdalla.

Entiteettien nimet saavat ison alkukirjaimen — contas muuttuu
Contasiksi — koska niin ne näkyvät API:ssa ja näytöillä. Taulu
tietokannassa on edelleen nimeltään contas.
Nota
Tuonti ei kopioi dataa eikä luo mitään tietokantaan. Ja entiteetin poistaminen mallista ei sekään poista taulua — ”EI muuta taulua tietokannassa.”, kuten ilmoitus itse sanoo.
Entiteettien yhdistäminen — kaksi suhdetta
CRM ilman suhteita on kolme irrallista listaa. Kaksi yhteyttä puuttuu: jokainen yhteyshenkilö kuuluu yhteen asiakkuuteen, jokainen myyntimahdollisuus kuuluu yhteen asiakkuuteen.
Luo suhde vetämällä entiteetin Contactos kenttä conta_id entiteetin
Contas kenttään id — kortin vinkki muistuttaa siitä: ”Vedä toisen
taulun kenttään luodaksesi yhteyden”. Avautuu valintaikkuna Uusi suhde,
jossa entiteetit ja sarakkeet ovat jo valmiina:
| Kenttä | Mitä valita | Miksi |
|---|---|---|
| Kardinaliteetti | One-to-many (1:N) | Yhdellä asiakkuudella on monta yhteyshenkilöä; jokaisella yhteyshenkilöllä on yksi asiakkuus. |
| Parent (viitattu) | Contas ▸ id |
”Yhden” puoli. |
| Child (sisältää vierasavaimen) | Contactos ▸ conta_id |
”Monen” puoli — se säilyttää viittauksen. |
| Suhteen tyyppi | Fyysinen — luo vierasavaimen tietokantaan | Tietokanta alkaa taata, ettei orpoja yhteyshenkilöitä ole. |
| Navigaattori: Contactos → Contas | conta |
Virtuaalinen kenttä, joka antaa yhteyshenkilöstä käsin hänen asiakkuutensa. |
| Navigaattori: Contas → Contactos | contactos |
Virtuaalinen kenttä, joka antaa asiakkuudesta käsin sen yhteyshenkilöt. |
| Kun vanhempi poistetaan (ON DELETE) | Ei mitään (estää, jos lapsia on) | Asiakkuuden poistaminen, kun sillä on yhteyshenkilöitä, alkaa olla kiellettyä — parempi virhe kuin aukko. |
Vahvista painikkeella Luo suhde ja toista sama ele entiteettien
Oportunidades ▸ conta_id ja Contas ▸ id välillä, käänteisellä
navigaattorilla oportunidades.

Navigaattorit ovat se osa, joka tuottaa eniten. Ne ovat kenttiä, joita ei
ole tietokannassa mutta jotka ovat mallissa: niiden avulla
myyntimahdollisuuksien kysely palauttaa conta.nome ilman että kukaan
kirjoittaa joinia. Juuri sitä kojelaudan taulu tekee seuraavassa vaiheessa,
sarakkeessa Conta.
Dica
Fyysinen luo vierasavaimen todella tietokantaan; Virtuaalinen — vain alustan mallissa on tarkoitettu tietokannoille, joiden skeemaan et voi (tai halua) koskea. Tässä oppaassa tietokanta on meidän, joten fyysinen.
Mitä avautui
Kun malli on valmis, sovellus sai asioita ilmaiseksi:
- Sovelluksen GraphQL-API tuntee nyt Contas-, Contactos- ja Oportunidades-entiteetit suhteineen — katso Mallin GraphQL-API.
- Taulu-API:t voivat nyt osoittaa entiteettiin ja tuottaa luvun ja kirjoituksen ilman ainuttakaan SQL-riviä. Se on seuraavan vaiheen ensimmäinen askel.
- Näytöt tulevat lukemaan näistä API:sta datastorejen kautta.
Miksi ei…?
- Miksi tauluni ei näy puussa? Objektipuu luetaan tietokannasta — käytä tietolähteen ⋯-valikon toimintoa Päivitä objektit sen jälkeen kun olet koskenut asioihin alustan ulkopuolella.
- Miksi en saa suhdetta luotua? Sarakkeiden on oltava yhteensopivia:
integer-pääavain liittyyintegeriin. Jos vedit väärään kenttään, peruuta ja toista — valintaikkuna sanoo, että sarakkeet ovat vielä valitsematta. - Miksi kenttä
contaei näy datassani? Navigaattorit eivät ole sarakkeita: ne ovat olemassa vain mallin kautta. Jos teet kyselyn SQL-konsolista, näet oikeat sarakkeet; navigaattorit näkyvät API:ssa ja näytöillä. - Miksi alusta ei anna minun poistaa asiakkuutta? Valitsit ON DELETE -kohtaan Ei mitään (estää, jos lapsia on) — ja siihen osoittaa yhteyshenkilöitä tai myyntimahdollisuuksia. Poista ne ensin, tai muuta suhteen sääntöä.
Perustus on tehty. Seuraava vaihe: näytöt.