Skip to content
Skip to content
Menu
Info Cafe
Info Cafe

Airtables guide to many-to-many relationships (Polski)

By admin on 24 lutego, 2021

To co odróżnia Airtable od zwykłych aplikacji arkuszy kalkulacyjnych to jego zdolność do łączenia ze sobą powiązanych koncepcji. Wiedza o tym, jak reprezentować relacje pomiędzy różnymi grupami obiektów może wymagać trochę praktyki – ale poprzez poznanie różnych typów relacji, możesz stworzyć potężne bazy, które dokładniej reprezentują złożoność Twoich danych.

Ten artykuł definiuje różne typy relacji pomiędzy listami encji i dostarcza przykłady, abyś mógł nauczyć się je identyfikować. Wyjaśnia również, jak reprezentować relacje wiele do wielu przy użyciu techniki zwanej „tabelami węzłowymi”.

Typy relacji

Jeden-do-jednego

Jeden-do-wielu

Związki wiele-do-wielu i tabele węzłowe

Przykład 1: Uczniowie i klasy

Przykład 2: Kandydaci i ankieterzy

Przykład 3: Klienci, zamówienia klientów, produkty i producenci

Pola obliczeniowe i tabele węzłowe

Rodzaje relacji

Airtable jest bazą danych. W bazach danych istnieje kilka różnych sposobów na opisanie relacji pomiędzy różnymi listami encji.

Jeden do jednego

Najprostszym rodzajem relacji jest relacja jeden do jednego. Załóżmy, że masz listę nazwisk ludzi i listę numerów ubezpieczenia społecznego. Każda osoba ma tylko jeden numer ubezpieczenia społecznego, a każdy numer ubezpieczenia społecznego jest powiązany z jedną osobą. W kontekście bazy Airtable, relacja jeden do jednego jest zwykle najlepiej reprezentowana przez konsolidację dwóch list informacji razem w jednej tabeli, przy użyciu dwóch pól.

M2M-SSN.png

Możliwe jest również zademonstrowanie relacji jeden do jednego przy użyciu pola powiązanego rekordu w ramach tej samej tabeli. Załóżmy, że posiadamy listę zawodników startujących w zawodach łyżwiarstwa figurowego. Dla każdej pary osób startujących w zawodach łyżwiarstwa parami, ich relacja jest jeden do jednego, ponieważ każdy partner ma tylko jednego innego partnera. Jeśli w tym przypadku stworzyłbyś pole połączonego rekordu, gdzie tabela byłaby połączona z samą sobą, wtedy byłoby możliwe wypełnienie pola partnerów z linkami rekordów z większej tabeli wszystkich zawodników.

image2.png

Związki jeden-do-jednego są stosunkowo rzadkie, ponieważ jest mało prawdopodobne, że obie strony danego związku mogą być dopasowane do jednego i tylko jednego odpowiednika. Oto kilka innych przykładów relacji jeden do jednego:

  • Ludzie-Paszporty (Każda osoba ma tylko jeden paszport z danego kraju i każdy paszport jest przeznaczony tylko dla jednej osoby.)
  • Kraj-Flaga (Każdy kraj ma tylko jedną flagę i każda flaga należy tylko do jednego kraju.)
  • Związki małżeńskie (Każda osoba ma tylko jednego współmałżonka.)

Jeden do wielu

Bardziej złożonym (ale również o wiele bardziej powszechnym) typem relacji jest jeden do wielu/jeden do jednego. Na przykład, jeśli masz listę dzieł sztuki i listę muzeów, każde dzieło sztuki może być tylko w jednym muzeum w tym samym czasie, ale każde muzeum może mieć wiele dzieł sztuki. W bazie, podzielenie tych dwóch list podmiotów (muzeów i dzieł sztuki) na dwie tabele pozwala na przechowywanie informacji istotnych dla każdego podmiotu. W przypadku dzieł sztuki, mogą to być informacje takie jak artysta i data ukończenia, a w przypadku muzeów, mogą to być informacje o godzinach otwarcia muzeum i jego adresie.

Jeśli miałbyś stworzyć bazę Airtable reprezentującą relację jeden do wielu pomiędzy listą muzeów i listą dzieł sztuki, mógłbyś umieścić każdą z tych list w tabeli muzeów i tabeli dzieł. Używając połączonych pól rekordów, można by to skonfigurować tak, że każdy rekord w tabeli prac jest powiązany z jednym rekordem muzeum, a każdy rekord w tabeli muzeów jest powiązany z jednym lub więcej rekordami w tabeli prac.

Muzea.png

Works.png

Często ma sens posiadanie dwóch połówek relacji jeden do wielu na oddzielnych tabelach, ale gdy wszystkie encje w relacji są tej samej klasy, może mieć więcej sensu użycie tabeli samowiązującej. Na przykład, załóżmy, że masz katalog firmowy z nazwiskami wszystkich pracowników: chcesz modelować relacje pomiędzy menedżerami i ich podwładnymi, biorąc pod uwagę, że każdy menedżer zarządza wieloma pracownikami, a każdy pracownik ma tylko jednego menedżera. Aby to zrobić, można utworzyć samopodłączające się pola rekordów dla każdego menedżera i podwładnych.

Image_2020-08-27_at_12.41.34_PM.png

Oto kilka innych przykładów relacji jeden do wielu:

  • Osoby-Adresy (Każda osoba może mieszkać pod jednym adresem, ale pod każdym adresem może mieszkać jedna lub więcej osób.)
  • Właściciele-Zwierzęta (Każde zwierzę ma jednego właściciela, ale każdy właściciel może mieć jedno lub więcej zwierząt.)
  • Rolnik-Sprzęt (Każdy kawałek sprzętu rolniczego jest własnością jednego rolnika, ale każdy rolnik może posiadać wiele sztuk sprzętu.)

Many-to-many

Na koniec, encje mogą mieć również relacje many-to-many. Załóżmy, że masz listę książek i listę autorów – każda książka może mieć jednego lub więcej autorów, a każdy autor może napisać wiele książek. W tym przypadku masz wiele książek powiązanych z wieloma autorami. W Airtable, reprezentowanie relacji pomiędzy tymi dwoma listami encji jest tak proste, jak tworzenie dwóch tabel i tworzenie połączonych pól rekordów.

W Airtable, reprezentowanie prostej relacji wiele do wielu pomiędzy dwoma listami encji jest tak samo proste, jak reprezentowanie relacji jeden do wielu. Dzięki połączonym polom rekordów możesz ustawić, że każdy rekord w tabeli książek jest połączony z jednym lub więcej rekordami autorów, a każdy rekord w tabeli autorów jest połączony z jednym lub więcej rekordami w tabeli książek.

Authors.png

Books.png

Tak jak w przypadku relacji jeden-do-jednego oraz jeden-do-wielu, istnieją sytuacje, w których sensowne jest reprezentowanie relacji wiele-do-wielu w pojedynczej, samodzielnie linkującej się tabeli, np. gdy wszystkie encje są tej samej klasy. Załóżmy, że chcesz śledzić przyjaźnie w grupie ludzi. Każda osoba może mieć wielu przyjaciół, a z kolei każdy z tych przyjaciół może mieć wielu innych przyjaciół. Moglibyśmy śledzić tę relację wiele do wielu w pojedynczej tabeli z samopodłączającym się polem rekordu.

dog.png

Oto kilka innych przykładów relacji typu many-to-many:

  • Składniki-Przepisy (Każdy artykuł spożywczy może być użyty w wielu przepisach, a każdy przepis wymaga wielu składników.)
  • Lekarze-Pacjenci (Każdy lekarz widzi wielu pacjentów, a każdy pacjent widzi wielu lekarzy.
  • Pracownicy-Zadania (Każdy pracownik pracuje nad wieloma zadaniami w tym samym czasie, podczas gdy każde zadanie jest opracowywane przez jednego lub więcej pracowników.)
  • Klienci-Produkty (Każdy klient może kupić wiele produktów, a każdy z tych produktów może być zakupiony przez wielu różnych klientów.

Zależności many-to-many i tabele łączące

Często, reprezentowanie relacji many-to-many w Airtable jest tak proste jak łączenie dwóch tabel razem. Jednakże, w niektórych sytuacjach, nie musisz tylko wiedzieć, że istnieje relacja pomiędzy dwoma podmiotami – musisz również być w stanie wyrazić i przechowywać inne informacje na temat tej relacji. W takich przypadkach musisz utworzyć trzecią tabelę, zwaną tabelą złączenia (lub join). Możesz myśleć o tabeli złączenia jako o miejscu do przechowywania atrybutów relacji pomiędzy dwoma listami encji.

Przykład 1: Studenci i klasy

Jeśli brzmi to abstrakcyjnie, spójrzmy na konkretny przykład: Załóżmy, że mamy listę uczniów i listę klas. Istnieje relacja many-to-many pomiędzy studentami i ich klasami, ponieważ każdy student może brać udział w wielu zajęciach, a każda klasa może mieć wielu zapisanych studentów. Mógłbyś po prostu stworzyć tabelę uczniów i tabelę klas, połączyć je razem i pozostawić to tak jak jest. Ale co jeśli chciałbyś przechowywać informacje o ocenach każdego studenta w klasie? Albo w którym semestrze uczeń uczęszczał na zajęcia? Czy umieścić te informacje w tabeli studentów, czy w tabeli klas?

Oceny studentów z ich zajęć oraz czas, w którym uczestniczyli w zajęciach mogą być uznane za atrybuty relacji pomiędzy studentami a klasami, do których się zapisali. Ponieważ każda z tych relacji ma swoją własną listę informacji, najlepszym sposobem jest stworzenie tabeli łączącej.

Zbudujmy taką tabelę łączącą krok po kroku. Powiedzmy, że mamy już tabelę uczniów i tabelę klas.

Image_2020-08-27_at_2.06.13_PM.pngclasses.png

Możemy stworzyć nową tabelę, która będzie miała pole związane z uczniami i pole związane z klasami. Możemy nazwać tę tabelę „Grades”, „Enrollment”, „Students/Classes” lub jakkolwiek inaczej, aby zapamiętać, że ta tabela jest tabelą łączącą tabele Students i Classes.

enrollment.png

Wciąż musimy wypełnić pole główne dla tej tabeli łączącej. Jednym z najlepszych sposobów na nazwanie rekordów w tabeli połączeniowej jest użycie formuły, która pobiera dane z innych pól w tabeli, aby skomponować unikalną nazwę dla każdego rekordu. Może to być szczególnie użyteczne w przypadku tabel połączonych, ponieważ często rekordy reprezentujące relacje między pojęciami nie nadają się szczególnie dobrze do pojedynczego, unikalnego pola głównego. Informacje istotne dla relacji każdego studenta z klasą (takie jak ocena lub semestr, w którym zajęcia były prowadzone) mogą być również umieszczone w tej tabeli.

enrollment_2.png

Jeśli wrócimy do tabel Students lub Classes, zobaczymy, że nowe pola powiązane z tabelą łączącą zostały utworzone automatycznie. Możesz utworzyć pola rollup lub lookup w tych tabelach, aby automatycznie przeciągnąć informacje z tabeli węzłowej do tabel Uczniowie lub Klasy.

studenci_2.png

Przykład 2: Kandydaci i osoby przeprowadzające rozmowy kwalifikacyjne

Jest jeszcze jeden przykład, kiedy chciałbyś użyć tabeli węzłowej: Masz listę kandydatów do pracy i listę osób przeprowadzających rozmowy kwalifikacyjne. Każdy kandydat przechodzi przez wiele wywiadów z różnymi ankieterami, a każdy ankieter prowadzi wiele wywiadów z różnymi kandydatami. Rozmowa kwalifikacyjna może być traktowana jako relacja pomiędzy aplikantem a ankieterem, i jako taka będzie nam potrzebna tabela łącząca do przechowywania informacji o każdej rozmowie kwalifikacyjnej.

Applicants.png

Interviews.png

Interviewers.png

Przykład 3: Klienci, zamówienia klientów, produkty i producenci

Oto bardziej złożony przykład. Załóżmy, że chcesz stworzyć bazę Airtable organizującą listy klientów i ich zamówień oraz produktów i ich producentów. Każdy klient może składać wiele zamówień, ale każde zamówienie jest powiązane tylko z jednym klientem:

Podobnie, każdy producent może wytwarzać wiele produktów, ale każdy produkt może mieć tylko jednego producenta:

Każde zamówienie klienta może mieć wiele produktów, a każdy produkt może być częścią wielu zamówień klienta:

Problemem jest jednak to, że nie ma dobrego miejsca do przechowywania informacji o ilości każdego produktu w konkretnym zamówieniu klienta. Rozwiązaniem jest stworzenie tabeli łączącej tabele zamówień klienta i produktów, którą możemy nazwać tabelą pozycji zamówienia.

Przykładowo wygląda to w bazie Airtable. Tabela clients jest połączona z tabelą clients orders:

Clients.png

Tabela clients orders jest połączona z tabelą clients oraz z tabelą order line items:

Client_Orders.png

Tabela Pozycje zamówień pobiera łącza z tabeli Produkty i tabeli Zamówienia klientów oraz ilość każdego produktu, aby utworzyć unikalne wartości pola głównego dla każdego z wierszy.

Order_Line_Items.png

Tabela produkty jest powiązana z pozycjami linii zamówienia i producentami:

Products.png

A tabela producenci jest połączona z tabelą produkty w relacji jeden do wielu.

Producenci.png

Pola obliczeniowe i tabele połączeń

Gdy masz tak wiele połączonych pól, ważne jest, aby używać pól wyszukujących i pól rolowanych na swoją korzyść, aby zminimalizować ilość danych, które musisz wprowadzić.

Załóżmy, że chcesz mieć pole w tabeli zamówień klienta, które automatycznie oblicza całkowity koszt zamówienia indywidualnego klienta. Aby to zrobić, należałoby pobrać z tabeli produktów informacje o koszcie jednostkowym do tabeli pozycji zamówienia za pomocą pola lookup.

Lookup.gif

Następnie, za pomocą formuły, można by obliczyć całkowity koszt dla każdej pozycji zamówienia.

Formula.gif

I na koniec, możesz użyć pola rollup w tabeli zamówień klienta, aby zsumować całkowity koszt wszystkich pozycji zamówienia w zamówieniu danego klienta.

rollup.gif

Zobacz wpisy

The Mamas & the Papas (Polski)
Avril Lavigne (Polski)

Dodaj komentarz Anuluj pisanie odpowiedzi

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Najnowsze wpisy

  • Firebush (Polski)
  • Prognoza stawek CD na 2021 rok: Stopy procentowe prawdopodobnie pozostaną na niskim poziomie, ale mogą wzrosnąć w dalszej części roku
  • Jak ustrukturyzować dokumentację systemu zarządzania jakością
  • Zdrowe Gry i Zajęcia dla Dzieci | UIC Online Informatics
  • Wheat Ales (American) (Polski)
  • Korzyści z karmienia piersią po roku
  • Czy bezpiecznie jest wrzucać fusy z kawy do zlewu | Atomic Plumbing
  • Cool-Down After Your Workout (Polski)
  • Nasza praca
  • Najlepsza ręczna maszyna do szycia do kupienia: 2020

Meta

  • Zaloguj się
  • Kanał wpisów
  • Kanał komentarzy
  • WordPress.org

Archiwa

  • Marzec 2021
  • Luty 2021
  • Styczeń 2021
  • Grudzień 2020
  • DeutschDeutsch
  • NederlandsNederlands
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • PolskiPolski
  • 日本語日本語
©2021 Info Cafe | WordPress Theme by SuperbThemes.com