2025.fossy.us/schedule/presentation/363/index.html

288 lines
10 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>FOSSY 2025 | Presentation: An Adventure in Data Modeling</title>
<meta property="og:type" content="website" />
<link rel="icon" href="../../../static/build/img/favicon.ico" />
<!-- Cards -->
<meta property="og:title" content="FOSSY 2025 | Presentation: An Adventure in Data Modeling">
<meta property="og:description" content="" />
<meta property="og:url" content="https://2025.fossy.us/schedule/presentation/363/">
<meta name="twitter:site" content="@conservancy">
<meta name="twitter:image:alt" content="FOSSY 2025 | Presentation: An Adventure in Data Modeling" />
<meta name="twitter:card" content="summary">
<meta name="twitter:image" content="https://2025.fossy.us/static/build/img/conservancy_logo_tall_mono.png" />
<meta property="og:image" content="https://2025.fossy.us/static/build/img/conservancy_logo_tall_mono.png" />
<meta property="og:image:width" content="400" />
<meta property="og:image:height" content="400" />
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">
<link rel='stylesheet' href='https://cdn.jsdelivr.net/npm/hack-font@3.3.0/build/web/hack.css'>
<link rel="stylesheet" href="https://unpkg.com/tachyons@4.12.0/css/tachyons.min.css">
<link href="../../../static/build/scss/app.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var CONF_TZ = "US/Pacific";
</script>
</head>
<body class="">
<header class="bg-washed-yellow pa2"><div class="container"><strong>Archived:</strong> This is an archive from the 2025 conference. See <a href="https://fossy.us/">fossy.us</a> for the latest event.</div></header><header class="clearfix d-print-none">
<nav class="navbar navbar-expand-lg navbar-dark" style="background: rgb(19,119,82); background: linear-gradient(124deg, rgba(19,119,82,1) 0%, rgba(19,106,119,1) 100%); margin-bottom: 1rem">
<div class="container">
<h2 class="sans-serif f2 f1-ns b lh-solid tracked-tight mv0 mr3">
<a class="washed-yellow hover-washed-yellow" href="../../../index.html" style="text-decoration: none">
FOSSY 2025
</a>
</h2>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarText">
<ul class="navbar-nav mr-auto">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="index.html#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
About
</a>
<div class="dropdown-menu">
<a class="dropdown-item " href="../../../about/index.html">About FOSSY</a>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="index.html#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Attend
</a>
<div class="dropdown-menu">
<a class="dropdown-item " href="../../../attend/tickets/index.html">Tickets</a>
<a class="dropdown-item " href="../../../travel/index.html">Travel and Lodging</a>
<a class="dropdown-item " href="../../../attend/volunteer.html">Volunteer</a>
<a class="dropdown-item " href="../../../attend/code-of-conduct.html">Code of Conduct</a>
<a class="dropdown-item " href="../../../attend/health-and-safety/index.html">Health and Safety</a>
<a class="dropdown-item " href="../../../attend/terms-and-conditions/index.html">Terms and Conditions</a>
<a class="dropdown-item " href="https://sfconservancy.org/privacy-policy/">Privacy policy</a>
</div>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="index.html#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Program
</a>
<div class="dropdown-menu">
<a class="dropdown-item " href="../../index.html">Schedule</a>
<a class="dropdown-item " href="../../../pages/tracks/index.html">Tracks</a>
<a class="dropdown-item " href="../../../call-for-proposals/index.html">Proposals</a>
</div>
</li>
<li class="nav-item ">
<a class="nav-link" href="../../../sponsorship/index.html">
Sponsorship
</a>
</li>
</ul>
</div>
</div>
</nav>
</header>
<main role="main" class="container">
<div class="row">
<div class="col page-header">
<h1 class="page-title">An Adventure in Data Modeling</h1>
<p class="lead">
338 | <span class="presentation-time" data-starttime="2025-08-02T14:00:00" data-endtime="2025-08-02T14:45:00">Sat 02 Aug 2 p.m.&ndash;2:45 p.m.</span>
</p>
</div>
</div>
<div class="row">
<div class="col-md-12">
</div>
</div>
<div class="row presentation-details">
<div class="col-md-3">
<h2 class="mt-4">Presented by</h4>
<ul class="list-unstyled">
<li class="mb-4 pb-2">
<img src="https://secure.gravatar.com/avatar/3a0b97dae73e7e0caef2caf1cbf360ae?s=120&amp;d=mp" alt="Mark Wong" class="rounded-circle img-fluid">
<p>
<strong><a href="../../../speaker/profile/418/index.html">Mark Wong</a></strong><br />
<i class="bi-mastodon"></i> <a href="index.html">@markwkm</a>
</p>
<div class="bio"><p>Mark Wong is currently employed by EDB and is a PostgreSQL Major Contributor. His background is in database systems solutions and performance. He has contributed to various aspects of the community such as a benchmarking kits, Google Summer of Code mentor, <a href="http://PGConf.US">PGConf.US</a> Organizer, Portland PostgreSQL Users Group Co-Organizer, PostgreSQL Fundraising Group Member, and Treasurer and President of PgUS.</p></div>
</p>
</li>
</ul>
</div>
<div class="col-md-9 presentation-abstract">
<h2 class="mt-4">Abstract</h4>
<div class="abstract pb-4"><p><p>This is a tale about one company's experience with a database schema design refactor to use the Entity-Attribute-Value (EAV) data model on its members. I will describe the original data model and why there was a need to move to a new data model, which the EAV was chosen for. This decision was made without realizing that the EAV data model is considered an anti-pattern for relational data modeling. There was some stumbling along the way but the company recovered and succeeded in implementing the EAV data model with some on-the-fly data transformation. The moral of the story really is to not use the EAV data model, but changing the data models is not always trivial. Hopefully this story can still help make the EAV data model bearable for the short term.</p></p></div>
<h2 class="mt-4">Videos</h4>
<iframe width="560" height="315" src="https://www.youtube.com/embed/RUdSO7OoxXQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
<p style="margin-top: 1rem">Available sources:</p>
<ul>
<li><a href="https://youtu.be/RUdSO7OoxXQ" rel="nofollow">https://youtu.be/RUdSO7OoxXQ</a></li>
</ul>
</div>
</div>
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<script src="../../../static/build/js/app.js" type="text/javascript"></script>
<script src="../../../static/build/js/jquery.formset.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="../../../static/build/bootstrap/js/bootstrap.bundle.min.js"></script>
<!--no-analytics-->
<script src="../../../static/build/js/luxon.min.js"></script>
<script src="../../../static/build/js/schedule.js" type="text/javascript"></script>
</main>
<footer class="footer mt-4 d-print-none">
<div class="container py-4">
<!-- <div class="row">
<div class="col-md-12 pb-12 text-center" style="margin-top: 0px;margin-bottom: 0px;border-bottom-style: solid;border-bottom-width: 0px;padding-bottom: 20px;">Wifi: FOSSY <i>(see Registration for older wifi)</i><br/>PIN: outreachy1000</div>
</div> -->
<div class="row">
<div class="col-md-4 pb-4">
<strong>FOSSY 2025</strong> <br>
July 31st August 3rd 2025 <br>
Portland, OR<br>
Timezone: PDT - UTC-7 <br>
<a href="mailto:conference@sfconservancy.org" alt="Email"><i class="bi-envelope-fill"></i></a>
<a href="https://x.com/conservancy" alt="Twitter"><i class="bi-twitter-x"></i></a>
<a href="https://social.sfconservancy.org/conservancy" alt="Mastodon"><i class="bi-mastodon"></i></a>
<a href="https://www.facebook.com/SoftwareFreedomConservancy/" alt="Facebook"><i class="bi-facebook"></i></a>
<a href="https://www.youtube.com/@softwarefreedomconservancy8558/videos" alt="YouTube"><i class="bi-youtube"></i></a>
</div>
<div class="col-md-4 pb-4 text-center">
<p class="text-secondary">Brought to you by</p>
<a href="https://sfconservancy.org"><img src="../../../static/build/img/conservancy_logo.svg" alt="Software Freedom Conservancy logo" class="footer-image"></a>
</div>
<div class="col-md-4 pb-4 text-right">
<small>
<a href="index.html#">Back to top</a><br>
&copy; 2025 <a href="https://sfconservancy.org/">Software Freedom Conservancy</a><br>
<a href="../../../credits/index.html">Credits</a>
</small>
</div>
</div>
</div>
</footer>
</body>
</html>