Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 9362|Vastaus: 0

[Lähde] MySQL-tietokannan rautasääntö

[Kopioi linkki]
Julkaistu 10.10.2019 14.00.44 | | |
Hyvä tietokantamäärittely auttaa vähentämään ohjelmiston toteutuksen monimutkaisuutta ja alentamaan viestintäkustannuksia.

1. Varaston rakentamisen rautalaki

-
Rautalaki
Taso
huomautus
Merkkijoukko
Käytä UTF-8:aa. Jos emoji on tallennettuna, käytä utf8mb4:ää tallennukseen.
pakotettu

Lajittelusäännöt
Käytä utf8_general_ci
pakotettu

2. Pöydän rakentamisen rautalaki

-
Rautalaki
Taso
huomautus
eksegeesi
Varmista, että sinulla on kenttämerkinnät.
pakotettu

koodata
Käytä UTF-8:aa. Jos emoji on tallennettuna, käytä utf8mb4:ää tallennukseen.
pakotettu

onko kenttä käsitteellinen
Se on nimettävä is_xx:lla, ja tietotyyppi on allekirjoittamaton tinyint (1 kyllä, 0 ei), esim. is_deleted(1 poista, 0 ei poistettu).
pakotettu
Minkä tahansa kentän on oltava allekirjoittamaton, jos se ei ole negatiivinen
Taulukon nimi, kentän nimi
Vain pieniä kirjaimia, alaviivoja tai numeroita voidaan käyttää; On kiellettyä aloittaa alleviivalla tai numerolla; Vain numerot ovat kiellettyjä kahden aliviivan välissä; Poista varatut sanat käytöstä; Monikon substantiivien käyttö on kielletty taulukkonimissä.
pakotettu

Tietokannan ja taulun nimen nimeäminen
Tietokannan nimen tulisi olla yhdenmukainen sovelluksen nimen kanssa, ja taulun nimi tulee nimetä taulun Business Name_Role mukaan.
pakotettu

Indeksin nimeäminen
Ensisijainen avainindeksi käyttää pk_ kentän nimeä; Uniiki indeksi uk_ kentän nimellä; Normaalit indeksit käyttävät idx_ kentän nimiä.
pakotettu
pk_ on pääsävellaji; uk_ on ainutlaatuinen sävellaji; idx_ on indeksi
Desimaalityyppi
Tietotyyppi on desimaali, ja floatin ja tuplauksen käyttö on kiellettyä, float ja double aiheuttavat tarkkuuden menetyksen, ja jos tallennettu dataväli ylittää desimaalialueen, on suositeltavaa jakaa data kokonaislukuihin ja desimaaleihin sekä tallentaa ne erikseen.
pakotettu

Varchar-tyyppi
Varchar on muuttuva pitkä merkkijono, tallennustilaa ei ole varattu etukäteen, pituuden ei saa ylittää 5000 merkkiä, jos pituus on yli 5000, sovelletaan tekstiä (luo erillinen taulukko, käytä ensisijaista avainta vastaamiseksi, jotta muiden kenttien indeksointitehokkuus ei vaikuteta).
pakotettu

Taulukon nimessä täytyy olla kolme kenttää
id (tietotyyppi on unsigned bigint, single table increment, askelkoko on 1), gmt_create, gmt_modified (aktiivinen luontiaika, passiivinen päivitysaika, tietotyyppi on datetime).
pakotettu

Kentän redundanssi
Kentät mahdollistavat asianmukaisen redundanssin, mutta datan yhdenmukaisuus on otettava huomioon, ja redundantteja kenttiä tulisi tehdä 1) harvoin muokattuja; 2) Ei varcharin superpitkä kenttä, saati sitten tekstikenttä.
suositella

Jaa tietokanta ja taulukot
Osiointia suositellaan vain, kun yhden taulukon rivien määrä ylittää 5 miljoonaa riviä tai yhden taulukon kapasiteetti ylittää 2 GB.
suositella


Sopivan merkkien tallennuspituuden asettaminen säästää paitsi tietokantataulun ja indeksin tallennustilaa, myös parantaa hakunopeutta.

3. Luo indeksirautalaki

-
Rautalaki
Taso
huomautus
Uniikki indeksi
Alalla omaavat ainutlaatuiset ominaisuudet, vaikka ne olisivatkin eri kenttien yhdistelmä, on indeksoitava yksikäsitteisesti. Vaikka ainutlaatuinen indeksi vaikuttaa insertin nopeuteen, tämä menetys on merkityksetön, mutta se parantaa kyselynopeutta merkittävästi. Lisäksi, vaikka sovelluskerroksella olisi hyvin kattava tarkistuskontrolli, niin kauan kuin ainutlaatuista indeksiä ei ole, Murphyn lain mukaan syntyy väistämättä likaista dataa.
pakotettu

liittyä
Yli kolme taulukkoa kieltää yhdistämisen, kentät, jotka vaativat liittämistä, ja tietotyyppien on oltava johdonmukaisia; Kun kyselyihin liittyy useita taulukoita, varmista, että niihin liittyville kentille tulee olla indeksi. Vaikka sinulla olisi kaksoistaululiitos, kiinnitä huomiota taulukkoindeksointiin ja SQL-suorituskykyyn.
pakotettu

Varcharfield
Indeksin pituus täytyy määritellä, eikä kaikkia kenttiä tarvitse indeksoida, vaan määritetään indeksin pituus varsinaisen tekstin erottelun mukaan. Indeksin pituus ja erottelu ovat ristiriitoja; yleensä merkkijonotyyppisissä tietoissa indeksit, joiden pituus on 20, erotusaste on yli 90 %, mikä voidaan määrittää count(distinct left(sarakkeen nimi, indeksin pituus))/count(*) erotusasteen perusteella.
pakotettu

Sumentaminen on kielletty sivuhaussa
Sivuhaku estää sumentamisen tai täydellisen sumentamisen, tarvittaessa mene hakukoneeseen ratkaisemaan se. Kieltoperuste: Indeksitiedostolla on B-puun vasemmanpuoleisin etuliitteen vastaavuusominaisuus, ja jos vasemmalla olevaa arvoa ei määritetä, tätä indeksiä ei voi käyttää.
pakotettu

Järjestys
Jos järjestys on skenaarioittain, kiinnitä huomiota indeksin järjestäytymiseen. Viimeinen järjestyskenttä on osa yhdistettyä indeksiä ja sijoitetaan indeksin yhdistelmäjärjestyksen loppuun file_sort välttämiseksi ja kyselyn suorituskyvyn vaikuttamiseksi. Esimerkki: missä a=? ja b=? järjestys c:llä; Indeksi tulisi rakentaa muodossa a_b_c; Vastaesimerkki: Jos indeksissä on aluehaku, indeksin järjestyslukua ei voi käyttää, kuten missä a>10 järjestys b:llä; Indeksiä a_b ei voi lajitella.
suositella

4. Kirjoita SQL-rautasäännöt

-
Rautalaki
Taso
huomautus
count(*)
Älä käytä count(sarakkeen nimi) tai count(constant) count(*) sijaan, joka on syntaksi SQL92:n määrittelemälle rivimäärälle, riippumaton tietokannasta ja riippumaton NULLista ja ei-NULLista. count(*) laskee rivejä, joiden arvo on NULL, kun taas count(sarakkeen nimi) ei laske rivejä, joissa on tämä sarake NULL.
pakotettu

count (erillinen col)
Laskee sarakkeessa olevien yksittäisten rivien määrän paitsi NULL. Huomaa, että count (erillinen col1, col2), jos yksi sarakkeista on kaikki NULL, se palauttaa 0, vaikka toisella sarakkeella olisi eri arvo.
pakotettu

sum(col)
Kun sarakkeen arvot ovat kaikki NULL, count(col) palauttaa 0, mutta sum(col) palauttaa NULL, joten sinun täytyy olla tietoinen NPE-ongelmista sum() käytössä. NPE-ongelmia voidaan välttää seuraavilla tavoilla: valitse if(isnull(sum(g)), 0, sum(g)) taulukosta;
pakotettu

isnull
Käytä isnull() määrittääksesi, onko kyseessä NULL-arvo. NULL on NULL verrattuna mihin tahansa arvoon.
pakotettu

Sivutuskyselylogiikka
Jos luku on 0, se tulee palauttaa suoraan, jotta seuraava sivutuslauseke ei suoriteta.
pakotettu

Ulommat avaimet ja putoukset
Vieraiden avainten käyttö ja kaskadi on kielletty, ja kaikki vierasavainkäsitteet on ratkaistava sovelluskerroksessa. Syy: Vierasavaimet ja sarjakkeet eivät sovellu hajautetuille, korkean rinnakkaisuuden klustereille, ketjuttautuvat päivitykset estävät voimaa, tietokantapäivitysmyrskyjen riski on ja vieraiden avaimet vaikuttavat tietokannan lisäysnopeuteen.
pakotettu

Tallennetut menettelyt
Tallennetut proseduurit ovat kiellettyjä, ja tallennetut proseduurit ovat vaikeita debugata ja skaalautua, eivätkä ne ole siirrettäviä.
pakotettu

Tietojen korjaus
Kun korjaat dataa (erityisesti tietueiden poistamisessa tai muokkaamisessa), valitse ensin estääksesi vahingossa tapahtuvan poiston, ja suorita päivityslauseke vasta sen jälkeen, kun olet varmistanut sen oikeellisuuden.
pakotettu

sisään
Jos sitä ei voi välttää, joukko-alkioiden määrää tulisi säädellä 1000:n sisällä.
suositella

Leikkaustaulukko
On kiellettyä käyttää truncate-taulukkoa, joka on nopeampi kuin delete ja käyttää vähemmän järjestelmä- ja lokiresursseja, mutta truncate on transaktiovapaa eikä laukaise triggerejä, mikä voi aiheuttaa vahinkoja, joten tätä lausetta ei kannata käyttää kehityskoodissa.
viittaus


5. ORM kartoittaa rautalakeja

-
Rautalaki
Taso
huomautus
Taulukkokysely
Listan kentistä, joiden * käyttö kyselyissä on kielletty, täytyy olla selkeä, mitkä kentät vaaditaan.
pakotettu

POJO
POJO-luokan Boolean-attribuuttia ei voi lisätä i:hen, kun taas tietokantakenttä täytyy lisätä is:ään, mikä vaatii kenttien ja attribuuttien välisen kartoituksen resultMapissa.
pakotettu

Paluuparametrit
On kiellettyä käyttää resultClassia palautusparametrina, vaikka kaikki luokan attribuuttinimet vastaisivat tietokantakenttiä yksitellen, ne täytyy määritellä; Jokaisella taulukolla täytyy puolestaan olla siihen vastaava attribuutti. Syy: Määritä kartoitussuhde niin, että kenttä yhdistetään DO-luokkaan helpon ylläpidon vuoksi.
pakotettu

Paluuparametrit
On kiellettyä käyttää suoraan HashMapia ja HashTablea kyselytulosjoukon tuloksena. Syy: Attribuutin arvon tyyppi on hallitsematon.
pakotettu

sql.xml Parametrien konfigurointi
sql.xml Käytä #{}, #param# konfiguraatioparametreina, äläkä käytä ${}, sillä ${} on altis SQL-injektiolle.
pakotettu

queryForList
Mybatisin mukana tulevan queryForListin (String statementName, int start, int size) käyttö on kiellettyä. Syy: Se toteutetaan hakemalla kaikki SQL-lauseen tietueet, jotka vastaavat statementNamea, tietokannasta, ja käyttämällä alilistaa saadakseen alku- ja kokojoukon.
pakotettu

Päivitysaika
Kun päivität tietokantataulun tietuetta, sinun täytyy päivittää myös tietueen muutosaika samaan aikaan.
pakotettu

Päivitä tietokantataulutietueita
Älä kirjoita suurta ja täyttä datapäivitysrajapintaa (joka toimitetaan POJO-luokkana). Kun suoritat SQL:ää, älä päivitä muuttumattomia kenttiä virhealttiiden, tehottomien ja lisääntyneen binlogitallennustilan vuoksi.
suositella

@Transactional
@Transactional Älä väärinkäytä tapahtumia. Transaktiot vaikuttavat tietokannan QPS:ään. Lisäksi, kun käytät transaktioita, sinun tulee ottaa huomioon erilaisia rollback-menetelmien osa-alueita, kuten välimuistin palautus, hakukoneiden palautus, viestien kompensointi, tilastollinen korjaus jne.
viittaus

Mybatisin dynaamiset sql-tunnisteet
< compareValue isEqualissa> on vakio verrattuna attribuuttiarvoon, yleensä luku, joka osoittaa, että vastaava SQL-lause suoritetaan, kun se on yhtä suur; < isNotEmpty> tarkoittaa, että se suoritetaan, kun se ei ole tyhjä eikä nolla; < isNotNull> tarkoittaa, että se suoritetaan, vaikka se ei ole null.
viittaus








Edellinen:SEO-operaatiokartta on koko verkon ensimmäinen, kokoelma ultra-täydellisiä Internetin teräväpiirtotoimintokarttoja
Seuraava:[Earth Science] DK Children's Encyclopedia Korkealaatuinen tietosanakirja Isosta-Britanniasta...
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com