Short answer: (1) Build a Merkle tree over your database and (2) give a Merkle path to the entry you want to prove is in the database.
SNARKs are great, but are a big hammer that's completely unnecessary here.
Cryptographic accumulators (RSA, bilinear) are great too, but will be much more expensive computationally & tricker to implement.
An example with a small database
Let $H : \{0,1\}^* \rightarrow \{0,1\}^{256}$ denote a hash function with 256-bit output (e.g., SHA3-256) and let $H(x)$ denote the hash of an arbitrary blob of data $x$.
Suppose you have 8 entries in your database: $f_1,f_2,\dots,f_8$.
You can build a Merkle tree by "recursively" hashing your files like this:
Next, give the root $h_{1,8}$ of the tree to the verifier.
Next, suppose you want to convince this verifier, who has the root (i.e., the source of truth), that the 3rd file $f_3$ is in the database.
Give him $f_3$ itself and the Merkle proof for $f_3$:
Note that the Merkle proof consists of the sibling nodes along the path from $f_3$'s leaf to the root.
The verifier can easily fill in the blanks in the picture above, by "hashing up the tree" and checking that the root he obtains when doing this is the same as $h_{1,8}$.