Konwencje nazewnictwa bazy danych dla panelu administracyjnego, które pozostają czytelne
Stosuj konwencje nazewnictwa w panelu admina, aby automatycznie generowane ekrany były czytelne: jasne zasady dla tabel i pól, enumów, relacji i szybka lista kontrolna.

Dlaczego nazwy decydują, czy panel administracyjny jest czytelny czy chaotyczny
Większość paneli administracyjnych jest budowana z modelu danych. Nazwy tabel i pól trafiają do elementów menu, tytułów stron, nagłówków kolumn, etykiet filtrów, a nawet słów, które ludzie wpisują w wyszukiwarkę.
Gdy nazwy są jasne, administrator może przeskanować listę i zrozumieć ją w kilka sekund. Gdy nazwy są niejasne, zatrzymuje się, zgaduje, otwiera rekord, wraca i próbuje ponownie. To wahanie się sumuje. Zamienia się w pytania „Jak znaleźć właściwego klienta?” i w dokumentację szkoleniową, której nikt nie chce czytać.
Deweloperzy zwykle nadają nazwy z myślą o budowaniu i debugowaniu. Operatorzy nadają nazwy z myślą o wykonywaniu pracy. Deweloper może być zadowolony z acct, addr1 czy stat, bo pamięta, co to znaczy. Operator potrzebuje „Account”, „Address line 1” i „Status” bez dekodowania.
W ekranie administracyjnym „czytelne” zwykle oznacza:
- Możesz przeskanować tabelę i zrozumieć każdą kolumnę bez otwierania wiersza.
- Możesz wyszukiwać i filtrować używając tych samych słów, których używasz w codziennej pracy.
- Możesz sortować i porównywać wartości bez niespodzianek (na przykład daty naprawdę jako daty, a statusy spójne).
Jeśli używasz platformy, która generuje ekrany z modelu (na przykład AppMaster’s Data Designer i widoki w stylu admin), nazewnictwo staje się częścią projektowania UI. Dobre nazwy dają czyste domyślne ekrany od pierwszego dnia, zanim zaczniesz poprawiać etykiety i układy.
Proste podstawy nazewnictwa, których może przestrzegać cały zespół
Jeśli chcesz, żeby generowane ekrany administracyjne wyglądały czyściej od razu, uzgodnij podstawy, zanim ktoś doda pierwszą tabelę. Większość problemów z nazewnictwem nie jest techniczna — to problem spójności.
Wybierz jeden styl identyfikatorów i nie mieszaj go. Dla baz danych snake_case jest zwykle najłatwiejszy do odczytu i wyszukiwania. Jeśli twoj stack oczekuje camelCase, trzymaj się go wszędzie (tabele, kolumny, klucze obce, enumy). Zmiana stylu w połowie projektu to główna przyczyna, dla której etykiety i filtry wydają się losowe.
Podstawowe zasady, które działają w większości zespołów:
- Używaj pełnych słów:
customer_id, a niecust_id;description, a niedesc. - Używaj jasnych rzeczowników dla bytów i jasnych czasowników dla akcji:
invoice,payment,refund_requested. - Stosuj spójne nazwy znaczników czasu:
created_at,updated_at,deleted_at. - Unikaj ogólnych słów jak
data,info,valueczytype, chyba że dodasz kontekst (np.shipping_address,payout_method). - Zachowaj spójność liczby pojedynczej i mnogiej (wiele zespołów używa tabel w liczbie mnogiej, np.
customers, a kolumn w pojedynczej, np.customer_id).
Napisz mały glosariusz i miej go widocznego. Zdecyduj wcześnie, czy mówisz „customer”, „client”, „account” czy „user”, a potem trzymaj się jednego terminu. Zrób to samo dla „order” vs „purchase” lub „ticket” vs „case”.
Szybki test: jeśli dwie osoby mogą spojrzeć na kolumnę account_status i zgodzić się, co to znaczy, bez pytań, to podstawa działa. Jeśli nie, zmień nazwę, zanim zbudujesz na niej ekrany i filtry.
Zasady nazewnictwa tabel, które czytelnie mapują się na menu i listy
Większość paneli administracyjnych zamienia nazwy tabel na elementy menu, tytuły list i okruszki nawigacyjne. Schemat nie jest tylko dla inżynierów — to pierwszy szkic UI.
Wybierz jeden styl dla tabel encji i trzymaj się go: liczba pojedyncza (user, invoice, ticket) lub mnoga (users, invoices, tickets). Liczba pojedyncza często lepiej brzmi w tytułach formularzy („Edit Ticket”), podczas gdy mnoga może wyglądać lepiej w menu („Tickets”). Obie są w porządku. Mieszanie ich powoduje, że nawigacja wydaje się niespójna.
Nazwij tabele tym, czym są, a nie tym, co robią. Tabela powinna reprezentować rzecz, na którą możesz wskazać. payment to rzecz; processing to działanie. Jeśli później dodasz zwroty, ponowienia i rozliczenia, nazwa processing stanie się myląca.
Zasady, które utrzymują menu i listy w porządku:
- Używaj konkretnych rzeczowników (
customer,subscription,invoice,ticket_message). - Unikaj „pojemnikowych” tabel na stałe dane (
settings,misc,temp,data). Podziel je na prawdziwe encje (notification_setting,tax_rate,feature_flag). - Preferuj krótkie, czytelne nazwy z podkreśleniami (
purchase_order,support_ticket) zamiast skrótów. - Dodaj prefiks modułu tylko wtedy, gdy zapobiega kolizjom (np.
billing_invoicevsinvoice). Jeśli używasz prefiksu, stosuj go konsekwentnie w module.
Jeśli używasz AppMaster do generowania ekranów bezpośrednio ze schematu, stabilne nazwy rzeczownikowe zazwyczaj dają czyste domyślne menu i widok list bez dużych poprawek.
Tabele łączące i identyfikatory: jak utrzymać czytelność relacji wiele-do-wielu
Relacje wiele-do-wielu to miejsce, gdzie panele adminów często zaczynają wyglądać chaotycznie. Jeśli tabela łącząca i jej klucze są dobrze nazwane, wygenerowane ekrany pozostają czytelne bez ręcznych poprawek.
Zacznij od jednej nudnej reguły i jej nie łam: każda tabela ma klucz główny o nazwie id. Nie mieszaj user_id jako klucza głównego w jednej tabeli i id w innej. Jednolite identyfikatory czynią relacje przewidywalnymi i pomagają wygenerowanym formularzom oraz polom referencyjnym pozostać spójnymi.
Dla czystych tabel łączących nazwij je po obu encjach, używając jednego wzorca i kolejności. Typowe opcje to alfabetyczna (product_tag) lub „główna rzecz pierwsza” (user_role). Wybierz jedno porządkowanie i stosuj je wszędzie.
Unikaj ogólnych nazw jak links czy mappings, chyba że tabela naprawdę przechowuje ogólne powiązania między obiektami. W większości paneli administracyjnych specyficzność bije pomysłowość.
Kiedy tabela łącząca staje się prawdziwą encją
Jeśli relacja ma dodatkowe pola, traktuj ją jak własny model i nazwij ją rzeczownikiem, który ludzie zrozumieją: membership, assignment, subscription. Na przykład, jeśli rola użytkownika ma starts_at, ends_at i granted_by, user_role jest w porządku, ale membership może lepiej brzmieć w UI.
Prosty zbiór reguł, który utrzymuje ekrany profesjonalne:
- Używaj
idjako klucza głównego w każdej tabeli. - Nazwij tabele łączące obie encje w spójnej kolejności (
user_role). - Używaj czytelnych kluczy obcych jak
user_idirole_id. - Dodaj regułę unikalności zgodną z rzeczywistością (np. jedna wartość
role_idnauser_id). - Jeśli dopuszczasz historię, spraw, by reguła unikalności pasowała do „aktywnych” rekordów (np. unikalne tam, gdzie
ended_atjest null).
Te wybory sprawdzają się wraz ze wzrostem danych i dobrze współpracują z AppMaster’s Data Designer, gdzie ekrany można generować prosto z modelu.
Wzorce nazewnictwa pól, które dają czytelne kolumny i filtry
Nazwy pól robią więcej niż pomagać deweloperom. Decydują o tym, co użytkownicy zobaczą jako nagłówki kolumn, etykiety filtrów i pola formularzy.
Przewidywalne sufiksy usuwają zgadywanie:
- Używaj
_iddla kluczy obcych:customer_id,assigned_agent_id. - Używaj
_atdla znaczników czasu:created_at,paid_at,closed_at. - Używaj
_countdla liczników:login_count,attachment_count.
Booleany powinny czytać się jak zwykłe zdania. Preferuj is_ i has_, aby pola wyboru miały sens na pierwszy rzut oka: is_active, has_paid, is_verified. Unikaj podwójnych zaprzeczeń jak is_not_approved. Jeśli potrzebujesz stanu „nie”, modeluj pozytyw i odwracaj logikę w kodzie.
Pola związane z pieniędzmi są częstym źródłem nieporozumień w siatkach administracyjnych. Wybierz jedno podejście i trzymaj się go: przechowuj jednostki mniejsze (np. grosze) w integerze lub przechowuj decimal z ustaloną precyzją. Nazwij pole tak, aby nikt nie musiał zgadywać. Na przykład total_amount_cents + currency_code, lub total_amount + currency_code. Nie mieszaj price, amount i total, jeśli oznaczają to samo.
Pola tekstowe powinny jasno określać przeznaczenie, nie tylko typ. description jest skierowane do użytkownika. internal_comment jest prywatne. notes to schowek i używaj go ostrożnie. Jeśli masz wiele notatek, nazwij je według odbiorcy: customer_note, agent_note.
Pola kontaktowe powinny być literalne, bo często stają się szybkim filtrem: website_url, contact_email, billing_email. W wygenerowanych ekranach AppMaster takie nazwy zwykle zamieniają się w czytelne domyślne etykiety.
Relacje i klucze obce: nazwy, które wyjaśniają model danych
Dobre relacje czytają się jak zwykły angielski (lub tu: jasna polszczyzna). Kiedy panel admina jest generowany z bazy, nazwy kluczy obcych często stają się tytułami kolumn, filtrami i etykietami formularzy.
Trzymaj się jednej zasady: kolumna klucza obcego to nazwa referencjonowanej tabeli plus _id. Jeśli masz customer.id, użyj customer_id. Jeśli masz order.id, użyj order_id. Ta spójność sprawia, że od razu widać, na co wskazuje kolumna.
Relacje do samej siebie wymagają dodatkowej jasności, bo łatwo je źle odczytać później. Unikaj ogólnego related_id. Używaj nazw, które wyjaśniają kierunek i znaczenie, np. parent_id dla struktur drzewiastych, manager_id dla schematów org., albo merged_into_id dla deduplikacji.
Gdy relacja korzysta z tabeli łączącej, nazwij ją tak, by czytała się jak zdanie. Na przykład ticket_assignee.user_id jest jaśniejsze niż ticket_user.user_id, jeśli rola to „assignee” (a nie „reporter” czy „watcher”).
Praktyczne kontrole, które zapobiegają większości problemów:
- Nie używaj ponownie
owner_ido różnych znaczeniach w różnych tabelach. Preferujcreated_by_user_id,account_manager_user_idlubbilling_contact_id. - Jeśli masz wiele relacji do tej samej tabeli, dodaj rolę:
requested_by_user_idiapproved_by_user_id. - Wybierz jeden znacznik miękkiego usuwania i trzymaj się go.
deleted_atjest szeroko rozumiane i dobrze działa z filtrami.
Jeśli później zbudujesz ekrany w AppMaster, te nazwy pojawią się wszędzie, więc odrobina troski tutaj oszczędzi dużo sprzątania UI.
Enumy i pola statusu, które pozostają czytelne z czasem
Jeśli panel administracyjny jest generowany z bazy, najszybszy sposób, by ekrany wyglądały chaotycznie, to rozrzucenie znaczenia po wielu małych flagach. Lepiej jedno jasne pole statusu opisujące główny cykl życia rekordu i dodatkowe flagi tylko tam, gdzie oznaczają niezależne zachowanie.
Praktyczna reguła: jeśli użytkownicy pytaliby „Gdzie jest ten element w swojej podróży?”, to jest to status. Jeśli pytanie brzmi „Czy ukryć ten element?” lub „Czy jest zablokowany?”, to osobny boolean.
Jeden status zamiast pięciu booleanów
Zamiast is_new, is_in_progress, is_done, is_cancelled, użyj jednego ticket_status. Lepiej wygląda w kolumnach list, filtrach i akcjach zbiorczych. Unika też niemożliwych kombinacji jak „done + in_progress”.
Trzymaj wartości enumów stabilne. Tekst w UI można zmieniać, ale przechowywane wartości nie powinny się zmieniać. Przechowuj pending, nie waiting_for_review. Przechowuj rejected, nie rejected_by_manager. Zawsze możesz później pokazać przyjaźniejsze etykiety bez migracji danych.
Kiedy potrzebujesz dodatkowego szczegółu, dodaj drugie pole zamiast przeciążać status. Przykład: trzymaj payment_status jako cykl życia, a dodaj failure_reason (tekst) gdy potrzeba.
Nazwij enumy według domeny (żeby filtry miały sens)
Używaj przedrostków domenowych, żeby ekrany pozostały czytelne, gdy wiele modeli ma „status”:
payment_status(checkout zamówienia)ticket_priority(pilność zgłoszenia)user_role(poziom dostępu)invoice_status(cykl życia faktury)delivery_status(cykl życia wysyłki)
Oddziel cykl życia od flag operacyjnych. Na przykład: status opisuje miejsce w workflow, a is_archived oznacza ukrycie z codziennych list.
Napisz jednozdaniowe znaczenie dla każdej wartości enumu w notatkach zespołu. Przyszły ty zapomni różnicy między cancelled a voided. Jeśli używasz AppMaster, krótkie definicje pomogą też utrzymać spójność rozwijanych list i filtrów między webem a mobile.
Przypadki brzegowe: daty, pola audytu i kolumny „type”
Poradniki nazewnictwa często obejmują tabele i podstawowe pola, ale panele adminów plączą się w przypadkach brzegowych. Daty, pola audytu i kolumny typu to miejsca, gdzie mylące nazwy zmieniają się w mylące ekrany.
Dla dat i znaczników czasu, nazwa powinna opowiadać historię: czy to planowane, rzeczywiste, czy przypomnienie? Prosty wzorzec to znaczenie w formie czasownika plus przejrzysty sufiks. Na przykład due_at (planowany termin) i completed_at (rzeczywiste zakończenie) renderują się jako zrozumiałe kolumny i filtry. Unikaj niejasnych par typu start_date i end_date, gdy naprawdę masz na myśli scheduled_at i finished_at.
Opcjonalne relacje to kolejna pułapka. Nie wymyślaj nowych wzorców dla każdej tabeli. Zachowaj nazwę relacji i pozwól, by „opcjonalne” wyrażało się przez allow null, a nie przez przemianowywanie pola. manager_id powinno nadal być manager_id, nawet jeśli jest opcjonalne.
Adresy mogą wyglądać dobrze w kodzie, ale źle w siatce. Numerowane linie są OK tylko wtedy, gdy zespół zgadza się co do ich znaczenia wszędzie. Bądź explicite:
address_line1,address_line2,city,region,postal_code,country_code- Unikaj
address1,address2(trudniejsze do czytania, łatwiejsze do zdublowania)
Pola audytu powinny być celowo nudne:
created_at,updated_atcreated_by_id,updated_by_id(tylko jeśli naprawdę potrzebujesz śledzenia użytkowników)
Uważaj na type. To prawie zawsze zbyt ogólne i szybko się starzeje. Zamiast type nazwij znaczenie: payment_method, ticket_channel, customer_tier. W schemacie napędzającym UI (w tym AppMaster) ta jedna decyzja może przesądzić między czytelnym filtrem a mylącym dropdownem.
Przykład: nazewnictwo modelu zgłoszeń supportowych, który dobrze wygląda w adminie
Małe, realistyczne ustawienie supportu: klienci piszą, personel odpowiada, a zgłoszenia można tagować. Konwencje nazewnictwa sprawiają, że automatycznie generowane menu, ekrany list i filtry wydają się oczywiste.
Zacznij od nazw tabel, które czytają się jak rzeczowniki w pasku bocznym:
customerticketticket_messageticket_tagticket_tag_link
W większości paneli administracyjnych zamienią się one w etykiety typu „Tickets” i „Ticket Messages”, a tabela łącząca pozostanie w tle.
Dla ekranu listy ticketów wybierz nazwy pól, które staną się jasnymi nagłówkami kolumn i filtrami:
subject,status,priorityassigned_to_id(wskazuje na użytkownika-personel)last_message_at(służy do sortowania po ostatniej wiadomości)created_at(standardowe i przewidywalne)
Enumy to miejsce, gdzie czytelność często się psuje, więc trzymaj zestaw stabilny i prosty:
ticket_status:new,open,pending_customer,resolved,closedticket_priority:low,normal,high,urgent
Jedna decyzja nazewnicza, która zapobiega ciągłemu zamieszaniu: nie przeciążaj „customer”. W obsłudze zgłoszeń osoba zgłaszająca nie zawsze jest klientem (ktoś z zespołu może zgłosić w imieniu). Jeśli przechowujesz osobę, która zgłosiła ticket, nazwij ją requester_id, a osobno przechowuj customer_id dla konta, którego dotyczy zgłoszenie. To rozróżnienie utrzymuje formularze i filtry prawdziwe od pierwszego dnia.
Krok po kroku: jak nazwać nowy model zanim zbudujesz ekrany
Najłatwiej utrzymać czytelność ekranów, nazywając rzeczy, gdy wciąż myślisz prostym językiem, a nie gdy już budujesz.
Powtarzalny proces dla każdej funkcji
-
Zacznij od mini-glosariusza (5–10 terminów). Zapisz słowa, których użyłaby osoba nietechniczna na spotkaniu, potem wybierz jedno preferowane słowo dla każdego pojęcia (np. „customer” vs „client”).
-
Szkicuj spodziewane ekrany: lista, szczegóły, tworzenie, edycja. Dla widoku listy zdecyduj, które 5–8 kolumn musi być od razu jasne jako nagłówki. Jeśli nazwa pola brzmiałaby dziwnie jako nagłówek, prawdopodobnie wymaga poprawy.
-
Zrób szkic tabel i relacji, potem nazwy pól stosując reguły sufiksów (
*_id,*_at,is_*,*_count). Gdy później wygenerujesz ekrany administracyjne (w tym w AppMaster), te wzorce zwykle dają czyste etykiety i przewidywalne filtry.
Zanim pójdziesz dalej, upewnij się, że nie mieszają się style (customer_id w jednej tabeli, clientId w drugiej). Spójność bije pomysłowość.
-
Zdefiniuj enumy wcześnie, nie po powstaniu pierwszego UI. Napisz jednozdaniowe znaczenie dla każdej wartości, jakbyś tłumaczył to osobie wsparcia. Wybieraj wartości, które przetrwają zmiany, np.
pending,active,archived, a nienew,newer,newest. -
Zrób „przeczytanie nagłówków kolumn”. Udawaj, że jesteś administratorem skanującym tabelę.
- Czy „Created At”, „Updated At”, „Status”, „Assigned To”, „Total Amount” mają sens bez szkolenia?
- Czy jakieś pola wyglądają na wewnętrzny kod (
tmp_flag,x_type,data1)? - Czy jednostki są oczywiste (
amount_centsvsamount,duration_secondsvsduration)?
Jeśli coś brzmi niejasno na głos, zmień to teraz. Zmiana nazwy później jest możliwa, ale często przecieka do raportów, filtrów i przyzwyczajeń.
Typowe błędy nazewnictwa, które utrudniają pracę w panelu admina
Jeśli schemat jest chaotyczny, ekrany też będą chaotyczne, niezależnie od tego, jak ładne jest UI. Konwencje nazewnictwa dotyczą mniej „stylu”, a bardziej codziennej użyteczności.
Pierwsza pułapka to mieszane słownictwo. Jeśli jedna tabela mówi client, a inna customer, twoje menu, filtry i wyniki wyszukiwania będą wyglądać, jakby opisywały różne rzeczy. Wybierz jedno słowo dla każdego kluczowego konceptu i używaj go wszędzie, również w nazwach relacji.
Kolejny częsty problem to przesadne skracanie. Skróty jak addr, misc czy info oszczędzają kilka znaków, ale kosztują czytelność w tabelach i eksportach.
Trzeci błąd to wbudowywanie przepływu UI w bazę. Pole typu new_customer_wizard_step ma sens podczas premiery, potem staje się mylące, gdy flow się zmieni lub dodasz drugą ścieżkę onboardingową. Przechowuj fakt biznesowy (np. onboarding_status) i pozwól UI decydować, jak prowadzić ludzi.
Uważaj też na nadmiar booleanów. Gdy dodasz is_new, is_open i is_closed, w końcu otrzymasz konflikty (dwa prawdziwe jednocześnie) i niejasne filtry. Lepiej jedno pole statusu z małym, dobrze nazwanym zbiorem wartości.
Czerwone flagi, które zwykle prowadzą do brzydkich ekranów:
- Dwa różne nazewnictwa tej samej rzeczy (
client_idw jednym miejscu,customer_idw innym) - Kolumny „schowkowe” (
notes,misc,extra) trzymające mieszane dane - Nazwy zależne od czasu (
summer_campaign_*) przetrzymujące kampanie - Wiele booleanów opisujących jeden stan
- Zmiany nazw robione bez planu migracji
Zmiana nazwy to nie tylko znajdź-i-zamień. Jeśli zmieniasz customer_phone na phone_number, zaplanuj migrację, zaktualizuj wygenerowane ekrany i zachowaj kompatybilność wsteczną tam, gdzie to potrzebne (szczególnie jeśli inne systemy odczytują API). W AppMaster czyste nazwy od razu się opłacają, bo listy, formularze i filtry dziedziczą etykiety z modelu.
Szybka lista kontrolna przed wypuszczeniem panelu admina
Zanim uznasz schemat za „gotowy”, przejdź przez niego z punktu widzenia osoby, która będzie żyć w panelu admina na co dzień.
- Tabele brzmią jak prawdziwe rzeczy. Współpracownik powinien umieć powiedzieć, co reprezentuje tabela (
ticket,customer,invoice) bez zgadywania. - Kluczowe pola mają przewidywalne sufiksy. Używaj wzorców rozpoznawalnych na pierwszy rzut oka:
*_iddla referencji,*_atdla znaczników czasu,*_amount(lub*_amount_cents) dla pieniędzy iis_*dla flag true/false. - Enumy są stabilne i proste. Przechowuj wartości jak
pending,paid,failedzamiast fraz UI, które się zmienią. - Nowy współpracownik może odgadnąć znaczenie. Gdyby pola pojawiły się na wygenerowanym widoku listy bez pomocy, czy intencja byłaby oczywista?
- Dwuznaczne słowa są usunięte lub sprecyzowane. Zamień nazwy typu
data,value,typeczyinfona konkretne jakstatus,source,category,notesczyexternal_reference.
Jeśli używasz AppMaster’s Data Designer do generowania widoków w stylu admina ze schematu, ta lista kontrolna jest od razu praktyczna: czytelne nazwy stają się czystymi kolumnami i filtrami, a spędzisz mniej czasu na poprawianiu etykiet po tym, jak użytkownicy zaczną korzystać z systemu.
Następne kroki: zamieniaj nazewnictwo w nawyk (i utrzymuj spójność ekranów)
Dobre nazewnictwo to nie jednorazowe sprzątanie. To mała rutyna, która utrzymuje czytelność UI administracyjnego w miarę rozrostu schematu.
Zacznij od jednego istniejącego modułu i zastosuj zasady tylko do następnej nowej tabeli, którą dodasz. To unika strasznego refaktoru i daje realne miejsce do praktyki. Jeśli następna funkcja dodaje „returns” do systemu zamówień, nazwij tabelę, klucze obce i statusy według swoich wzorców od pierwszego dnia, a potem wykorzystaj to podejście dla kolejnej funkcji.
Trzymaj jednostronicowy przewodnik nazewnictwa obok miejsca, gdzie pracujesz nad schematem. Niech będzie krótki: jak nazywasz tabele, klucze główne, klucze obce, znaczniki czasu i enumy statusu. Celem są szybkie decyzje, nie długie debaty.
Jeśli budujesz z AppMaster, warto ustawić te wzorce w Data Designer zanim dotkniesz ekranów UI. Kiedy zmieniasz nazwy tabel lub pól, zregeneruj aplikację, żeby ekrany, API i logika pozostały wyrównane zamiast dryfować.
Lekki krok przeglądowy przed każdym wydaniem zwykle wystarcza:
- Czy nazwy tabel i pól czytają się dobrze jako elementy menu, nagłówki kolumn i filtry?
- Czy statusy i enumy są jasne bez dodatkowego wyjaśnienia?
- Czy relacje i klucze obce autoeksplicytują się (bez tajemniczych skrótów)?
- Czy podobne modele mają spójne nazwy (te same słowa, ta sama kolejność)?
Z czasem prawdziwa korzyść to spójność. Gdy każdy nowy model przestrzega tych samych zasad, twoje panele administracyjne zaczną wyglądać jak zaprojektowane, nawet jeśli są generowane — bo etykiety i listy czytają się jak spójny produkt.
FAQ
Używaj nazw, które opisują, czym rekord jest, a nie co robi. Tabela nazwana ticket lub invoice stanie się czytelnym elementem menu, podczas gdy coś typu processing szybko stanie się mylące, gdy przepływ pracy się zmieni.
Wybierz jeden styl i trzymaj się go wszędzie. Dla większości baz snake_case jest najłatwiejsze do szybkiego odczytu i zapobiega przypadkowemu mieszaniu stylów w etykietach i filtrach.
Domyślnie używaj pełnych, oczywistych słów, bo staną się nagłówkami kolumn i etykietami filtrów. Skróty jak acct czy addr1 zwykle powodują wahanie u operatorów, nawet jeśli deweloperzy je rozumieją.
Wybierz jedną strategię i zachowaj spójność: albo liczba pojedyncza (ticket), albo mnoga (tickets). Głównym celem jest, aby nawigacja i tytuły stron nie mieszały stylów między modułami.
Prosta zasada: klucz główny każdego rekordu to id, a klucze obce to coś_id. Dzięki temu relacje są przewidywalne, a wygenerowane formularze i pola referencyjne wyglądają spójnie.
Nazwij czyste tabele łączące obie encje, stosując spójne porządkowanie, np. user_role lub product_tag. Jeśli związek ma własne pola i znaczenie, nazwij go rzeczownikiem (membership, assignment), aby UI czytał się naturalnie.
Używaj przewidywalnych sufiksów dopasowanych do typu i przeznaczenia: _at dla znaczników czasu, _count dla liczników. Dla booleanów preferuj is_ i has_, żeby pola wyboru czytelnie brzmiały w wygenerowanych ekranach.
Wolę jedno jasne pole statusu dla głównego cyklu życia (np. ticket_status) zamiast kilku nachodzących na siebie booleanów. Przechowuj stabilne, proste wartości, żeby w przyszłości móc zmienić wyświetlane etykiety bez migracji danych.
Nie używaj wieloznacznych nazw typu owner_id w różnych miejscach. Stosuj nazwy określające rolę, np. created_by_user_id, approved_by_user_id albo payment_method, żeby ekrany i filtry same się wyjaśniały.
Zmiany wprowadzaj wcześnie, zanim ekrany, filtry i raporty zależą od starej nazwy. W AppMaster zaktualizuj nazwy w Data Designer i zregeneruj aplikację, żeby UI i API pozostały zsynchronizowane.


